我试图为多语言网站编写规则。例如,www.hostname.com/fr 和 www.hostname.com/de 都可以,但尝试任何其他语言标签应该重定向到 www.hostname.com/en。www.hostname.com/it 重定向到 www.hostname.com/en,www.hostname.com/es 重定向到 www.hostname.com/en 等等...
我成功地以“积极”的方式制定了一些规则,但每次我添加一个!创建一个否定规则,它不起作用。
例如 :
RewriteCond %{HTTP_HOST} ^www.hostname.com$
RewriteCond %{REQUEST_URI} ^/?([a-z]{2})/?$
RewriteCond %{REQUEST_URI} ^/?(fr|de)/?$
RewriteRule (.*) http://www.hostname.com/en [L,R=301]
此代码将所有内容重定向到 hostname.com/en。我只想要与 fr et de 重定向到 en 不同的标签。所以我尝试了:
RewriteCond %{HTTP_HOST} ^www.hostname.com$
RewriteCond %{REQUEST_URI} ^/?([a-z]{2})/?$
RewriteCond %{REQUEST_URI} !^/?(fr|de)/?$
RewriteRule (.*) http://www.hostname.com/en [L,R=301]
刚加了一个!。但它不起作用,URL 永远不会被重定向。我可能在编写规则时遗漏了一些东西......