1

同时组合 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 中使用它们的方法

4

2 回答 2

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/带有斜杠

于 2012-12-01T06:20:06.800 回答
1

使用 HTACCESS 的非万维网 URL:

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

ps:请确保在继续之前备份 .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]


于 2014-08-25T13:57:27.923 回答