这是我的服务器.htaccess
内容。我有一个由Wordpress提供支持的网站。
# 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]
# Convert old permalink structure to the new one
RedirectMatch 301 ^/(\d+)$ http://example.com/?p=$1
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ http://example.com/$4
# Redirect all requests to .com
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^/(.*) http://example.com/$1 [L,R=301]
</IfModule>
# END WordPress
我的问题是关于用于将请求重定向到.com
的两行,这些行以这种方式行事:
http://example.org/post_name/ ==&gt; http://example.compost_name
正如您所看到的,tld和URI之间的新URL中缺少 / 。我也检查了这条规则,但没有影响结果:
RewriteRule ^ http://example.com%{HTTP_URI} [L,R=301]
请帮我写一个合适的重定向规则。
答案 0 :(得分:1)
对我来说看起来很好,并且不应该以这种方式重定向。我想你只是在你的浏览器中缓存了破碎的重定向。尝试清除缓存并再次测试。您可以在重新测试时将重定向设置为302而不是301,这是一个临时重定向,可能没有缓存。
<强>更新强>
在OP的进一步调查中,结果发现服务器重定向与.htaccess
重写规则冲突并阻止其正常工作。删除这些重定向解决了这个问题。