重定向没有www加上尾随斜杠?

时间:2016-10-19 15:42:53

标签: apache .htaccess mod-rewrite

我的.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尝试它失败并且不会删除它也不会添加尾部斜杠。

2 个答案:

答案 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]