2011-12-22 74 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