我到处搜索,包括SO,都找不到这个问题的答案:
我想设置301重定向,以便:
www.mysite.com/some-page.html
重定向到
www.mysite.com/some-page/
我在我的htaccess文件中使用了以下内容(它是一个WordPress网站):
RewriteEngine On
RedirectMatch 301 (.*)\.html$ $1
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
问题
如果我访问www.mysite.com/
,则会重定向到www.mysite.com/index
(注意:如果我访问www.mysite.com/some-page.html
,可以正常工作并重定向到www.mysite.com/some-page/
)
有关如何使这项工作的任何建议?我确定我错过了一些明显的东西......
答案 0 :(得分:1)
RedirectMatch
是mod_alias的一部分,RewriteRule
内容是mod_rewrite的一部分。两个模块将应用于处理管道的不同点处的相同URI。这意味着你不能告诉apache停止它做什么和重定向。无论如何,mod_rewrite部分仍然会被应用。
要解决这个问题,请坚持使用mod_rewrite代替:
RewriteEngine On
RewriteRule ^(.*)\.html /$1/ [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress