我的.htaccess文件中有以下内容
RewriteEngine On
RewriteCond %{REQUEST_URI} ^www.mysite.com [NC]
RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ mysite.com/$1/ [R=301,L]
我试图让它重定向所有没有www的URL,并且始终在URL的末尾添加一个尾部斜杠。
如果您在没有www的情况下直接点击它,这是有效的,但如果您使用www尝试它失败并且不会删除它也不会添加尾部斜杠。
答案 0 :(得分:2)
以下是删除www
并添加尾部斜杠的单一规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*?)/?$ http://%1/$1/ [R=301,L,NE]
这也可以避免在规则中对您的域名进行硬编码。
答案 1 :(得分:1)
您可以使用这两个规则来强制执行。另外,在第一个条件下你有语法错误。它应该是HTTP_HOST
而不是REQUEST_URI
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [R=301,L]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [R=301,L]