这是一个多站点问题。我有很多网站都有.htaccess文件,其中多行类似于:
rewriterule ^(page-one|page-two|page-three)/?$ /index.php?page=$1 [L]
这意味着www.domain.com/page-one和www.domain.com/page-one/都将加载www.domain.com/index.php?page=page-one
但是我总是被告知,确保每页只使用一个网址是一个很好的搜索引擎优化实践,所以我想做的是将www.domain.com/page-one重定向到www.domain。 com / page-one /通过.htaccess文件。
请注意我不寻找的答案是从行尾删除?$,因为这会导致www.domain.com/page-one成为404链接。
答案 0 :(得分:4)
这是一个强制所有内容以斜杠结尾的片段
rewritecond %{REQUEST_FILENAME} !-f
rewritecond %{REQUEST_URI} !(.*)/$
rewriterule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
答案 1 :(得分:2)
使用HTTP重定向将使用“错误”网址的用户发送到正确的网址。例如,你可以使用:
RewriteRule ^(.+[^/])$ $1/ [R]
在你自己的RewriteRule之前。
请注意:这也会在以文件名结尾的URL中添加斜杠。如果您有这样的URL,则必须在重定向之前为它们添加例外。
另请参阅FAQ entry on trailing slashes和example page for mod_rewrite!
答案 2 :(得分:1)
未经测试,但你不能这样做吗?
RewriteRule ^(.*[^/])$ $1/
RewriteRule ^(page-one|page-two|page-three)?$ /index.php?page=$1 [L]