Apache 使用mod_Rewrite-breaks-Archive重写WordPress永久链接URL
下面的mod_重写规则完成了将Apache 使用mod_Rewrite-breaks-Archive重写WordPress永久链接URL,apache,wordpress,mod-rewrite,Apache,Wordpress,Mod Rewrite,下面的mod_重写规则完成了将www.domain.com/2011/11/page重写为www.domain.com/page的任务,但中断了www.domain.com/2011/11/(即中断WordPress存档列表)并将其重定向到站点的根目录 重写规则应该只重写在^([0-9]{4})/([0-9]{1,2})/page之后有内容的项,而不重写^([0-9]{4})/([0-9]{1,2})/ 有什么建议吗 回答 开头缺少初始正斜杠: RewriteRule ^/([0-9]{4})/
www.domain.com/2011/11/page
重写为www.domain.com/page
的任务,但中断了www.domain.com/2011/11/
(即中断WordPress存档列表)并将其重定向到站点的根目录
重写规则应该只重写在^([0-9]{4})/([0-9]{1,2})/page
之后有内容的项,而不重写^([0-9]{4})/([0-9]{1,2})/
有什么建议吗
回答
开头缺少初始正斜杠:
RewriteRule ^/([0-9]{4})/([0-9]{2})/(.*)$ /$3 [NC,R=301,L]
并且需要WordPress permalink条目:
/%postname%/
而不是:
%postname%
虽然我不确定后者有多大帮助。我认为您需要将*改为a+
RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.*)$ /$3 [NC,R=301,L]
应该是
RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.+)$ /$3 [NC,R=301,L]
使用(.)时,它可能不匹配任何内容,因此像“/2011/11/”这样的请求将匹配,但(.)的后面引用将为空,因此重写将转到“/”。+表示正则表达式中至少需要1个字符满足“.”的要求。我晚了一点回答,但我没有足够的分数在8小时内回答我自己的问题。
*
虽然我无法及时回答我自己的问题,但实际上有效;-)
RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.+)$ /$3 [NC,R=301,L]