我正在尝试将所有不以语言环境开头的页面重定向到具有语言环境的页面。例如:/index.htm 被重定向到 /en-US/index.htm,但 /en-US/hello.htm 不会被重定向到任何地方。
我无法使匹配规则起作用,这是我尝试过的:
!^/[a-z]{2}-[A-Z]{2}/$
编辑:jacouh 是对的,事情一直有效,重写规则是错误的,我的测试也是如此。
我正在尝试将所有不以语言环境开头的页面重定向到具有语言环境的页面。例如:/index.htm 被重定向到 /en-US/index.htm,但 /en-US/hello.htm 不会被重定向到任何地方。
我无法使匹配规则起作用,这是我尝试过的:
!^/[a-z]{2}-[A-Z]{2}/$
编辑:jacouh 是对的,事情一直有效,重写规则是错误的,我的测试也是如此。
我在 Debian/Apache2 的 vhosts 文件中对此进行了测试:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/en-US/hello\.htm
RewriteRule !^/[a-z]{2}-[A-Z]{2}/ /en-US/hello.htm [R=301,L]
这样可行。
/en-US/hello.htm 必须存在,否则可能出现无限循环的重定向。