htaccess 语言条件重定向
htaccess language conditional redirect
我需要在我的 htaccess 中进行重定向,具体取决于 url 中是否存在语言代码。
Url 结构应以域开头,后跟语言代码,然后是特定页面(与任何常规站点一样)
domain.com/zh/section/subsection/
如您所见,/en/ 是语言代码,但可以有不同的语言代码 [/en/es/it/]
所以规则应该如下:
- 语言代码必须存在且长度必须为 2 个字符
如果不匹配此规则,浏览器应重定向到默认语言“/en/”
在我看来是这样的……只在我的脑海里;)
RewriteCond %{REQUEST_URI} !^/([az]){2}/(.*)$
RewriteRule ^(.*)$ /en/ [L]
提前致谢
您的正则表达式似乎不正确,您可以在 RewriteRule
中执行此操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [R=301,L]
在@anubhava 的帮助下,这段代码终于成功了。
谢谢!!
RewriteCond %{REQUEST_URI} !^(.+)\.(js|css|png|jpe?g|gif|eot|woff2?|ttf|otf|svg|json|txt|xml|html?|htc|ico|m4a|m4v|manifest|mp4|mp3|oex|oga|ogg|ogv|otf|pdf|swf|fla|safariextz|svgz?|vcf|webapp|webm|webp|xpi)$ [NC]
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [R=301,L]
我需要在我的 htaccess 中进行重定向,具体取决于 url 中是否存在语言代码。
Url 结构应以域开头,后跟语言代码,然后是特定页面(与任何常规站点一样)
domain.com/zh/section/subsection/
如您所见,/en/ 是语言代码,但可以有不同的语言代码 [/en/es/it/]
所以规则应该如下:
- 语言代码必须存在且长度必须为 2 个字符
如果不匹配此规则,浏览器应重定向到默认语言“/en/”
在我看来是这样的……只在我的脑海里;)
RewriteCond %{REQUEST_URI} !^/([az]){2}/(.*)$
RewriteRule ^(.*)$ /en/ [L]
提前致谢
您的正则表达式似乎不正确,您可以在 RewriteRule
中执行此操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [R=301,L]
在@anubhava 的帮助下,这段代码终于成功了。 谢谢!!
RewriteCond %{REQUEST_URI} !^(.+)\.(js|css|png|jpe?g|gif|eot|woff2?|ttf|otf|svg|json|txt|xml|html?|htc|ico|m4a|m4v|manifest|mp4|mp3|oex|oga|ogg|ogv|otf|pdf|swf|fla|safariextz|svgz?|vcf|webapp|webm|webp|xpi)$ [NC]
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [R=301,L]