我在同时组合2个mod_rewrite时遇到.htacess的问题:
这是我的.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中使用它们的方法
答案 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]