以下mod_rewrite规则完成将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]{1,2})/(.*)$ /$3 [NC,R=301,L]
有什么建议吗?
ANSWER
开头时缺少最初的正斜杠:
RewriteRule ^/([0-9]{4})/([0-9]{2})/(.*)$ /$3 [NC,R=301,L]
需要WordPress永久链接条目:
/%postname%/
而不是:
%postname%
虽然我不确定后者有多大帮助。
答案 0 :(得分:2)
我认为您需要将*更改为+
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”这样的请求将匹配,但(。)的后向引用将为空,因此重写将进行至 ”/”。 + 表示需要至少有一个字符满足“。”。在正则表达式中。