删除尾部斜杠和非www到www - 使用.htaccess

时间:2012-12-01 06:12:47

标签: .htaccess mod-rewrite trailing-slash

我在同时组合2个mod_rewrite时遇到.htacess的问题:

  • 删除尾部斜杠
  • 将非www重定向到www

这是我的.htaccess文件

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.+)/$ http://www.domain.com/$1 [R=301,L]

# Remove trailing slash
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

当我刚刚使用其中一个时,它们工作得很好,但当我把它们放在一起时,页面就会像永远一样继续加载。

请帮助我找到一种可以在同一个.htaccess中使用它们的方法

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteEngine on
Options +FollowSymLinks
RewriteBase /
#Non www to www without trailing slash
RewriteCond %{HTTP_HOST} ^(domain\.com)/?$ [NC]
RewriteRule ^(.*/?[^/]+)/?$ http://www.domain.com/$1 [R=301,L,OR]
RewriteRule  .* http://www.domain.com [R=301,L]

结果:

http://domain.com/aa/http://ww.domain.com/aa

http://domain.com/aa/bb/http://ww.domain.com/aa/bb

http://domain.com/以外的所有内容,http://www.domain.com/始终为尾部斜杠

答案 1 :(得分:1)

使用HTACCESS进行WWW的非WWW网址:

您可以将以下代码添加到.htaccess文件中,您可以在您的网站根目录中找到它,如果您找不到它,您可以在文本编辑器中将其复制并保存为.htaccess,然后上传它。

p.s。:确保在继续之前备份.HTACCESS文件。代码不正确可能导致500错误。



    RewriteEngine On
            RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
            RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]


删除尾部斜杠

关闭尾部斜线时要小心。如果主机启用了mod_dir,请确保关闭目录斜杠,默认情况下启用该目录斜杠。无论您设置什么规则,该指令都会在目录末尾添加一个尾部斜杠。要禁用此功能,请将其添加到htaccess文件的顶部:


DirectorySlash Off

默认情况下,您的浏览器甚至服务器都会向目录添加尾部斜杠。这是有原因的。如果你必须删除尾部斜杠,你可以这样做:



    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)$
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]