自升级到WordPress 3.3以来,每次URL都没有按照自己的意愿重定向。 已更改: domain.com/2010/10/postname / 至: domain.com/postname /
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/[0-9]{4}/[0-9]{2}/(.+)$ /$1 [NC,R=301,L]
答案 0 :(得分:1)
问题是由于领先的斜线并且没有使用$ 3
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.+)$ /$3 [NC,R=301,L]
答案 1 :(得分:1)
如果要将永久链接更改为/%postname%/ structure,可以使用此脚本生成.htaccess规则。
http://yoast.com/change-wordpress-permalink-structure/
我的固定链接与您的完全相同,我使用此工具更改它们并且运行良好。
答案 2 :(得分:0)
如果先前的规则匹配,则永远不会应用最后一条规则。假设 http://domain.com/2010/10/postname/ 请求与文件或目录不匹配,RewriteRule . /index.php [L]
将重写URI为{ {1}}因此它永远不会达到你的规则。尝试将规则上移到/index.php
下方的顶部,并复制!-f /! - d条件,使其如下所示:
RewriteBase /
此外,如果它位于.htaccess文件中,则需要删除规则匹配中的前导斜杠,使其如下所示:RewriteBase /
# for 301 redirect
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/[0-9]{4}/[0-9]{2}/(.+)$ /$1 [NC,R=301,L]
# the rest of the rules
RewriteRule ^atom.xml$ feed/ [NC,R=301,L]
RewriteRule ^rss.xml$ feed/ [NC,R=301,L]
RewriteRule ^rss2.xml$ feed/ [NC,R=301,L]
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/handle [R=302,NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]