2011-12-22 75 views
1

每次升级到WordPress 3.3 URL都不会重定向。 更改:domain.com/2010/10/postname/到:domain.com/postname/WordPress 3.3的重写规则永久不起作用

RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/[0-9]{4}/[0-9]{2}/(.+)$ /$1 [NC,R=301,L] 

回答

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] 
0

如果前面的规则匹配的最后一条规则将永远不会得到应用。假设http://domain.com/2010/10/postname/请求与文件或目录不匹配,RewriteRule . /index.php [L]将重写URI到/index.php,因此它永远不会达到您的规则。建议您升级您的规则上,仅低于RewriteBase /,并复制-f/- d条件,使其看起来像这样:!

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] 

而且,如果这是在.htaccess文件,您需要删除斜线的规则匹配,使它看起来像这样:^[0-9]{4}/[0-9]{2}/(.+)$

+0

请注意,重定向在IE中完全不起作用,我相信Firefox可能会以某种方式缓存重定向。 – Astron 2011-12-22 05:43:20