【问题标题】:rewrite rule for WordPress 3.3 permalinks is not workingWordPress 3.3 永久链接的重写规则不起作用
【发布时间】:2012-01-25 19:20:11
【问题描述】:

自从升级到 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]

【问题讨论】:

    标签: regex apache wordpress mod-rewrite


    【解决方案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]
    

    【讨论】:

      【解决方案2】:

      如果您想更改 /%postname%/ 结构的永久链接,可以使用此处的脚本生成 .htaccess 规则。

      http://yoast.com/change-wordpress-permalink-structure/

      我的永久链接和你的完全一样,我用这个工具来改变它们,它运行良好。

      【讨论】:

        【解决方案3】:

        如果前一个规则匹配,则永远不会应用最后一个规则。假设 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}/(.+)$

        【讨论】:

        • 请注意,重定向在 IE 中根本不起作用,我相信 Firefox 可能会以某种方式缓存它工作时的重定向。
        猜你喜欢
        • 1970-01-01
        • 2011-05-18
        • 2015-07-03
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多