几年前,我将所有的wordpress网址重定向到
/blog/YYYY/MM/DD/[TITLE]
到
/blog/[TITLE]
现在我删除了/ blog /,以便重定向我的所有网址
/blog/[TITLE]
到
/[TITLE]
这项工作很棒。但问题出在这里:
现在这些网址
/blog/YYYY/MM/DD/[TITLE]
重定向到
/YYYY/MM/DD/[TITLE]
结果:404
以下是我的重定向规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RedirectMatch 301 /blog/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /blog/$4
RewriteRule ^blog/(.*)$ /$1 [R=301,L,NC]
RewriteCond %{REQUEST_URI} ^/blog[/]?$
RewriteRule (.*) / [R=301,L]
我该如何解决这个问题?任何的想法?说实话:我从来没有真正理解这是如何运作的。 ;-)
答案 0 :(得分:1)
这个想法是在没有使用的情况下使用链接请求301重定向到用户,直到它没有使用apache重写规则在内部解决。并且只有最新请求通过301重定向规则向用户公开。
# Redirect to site without www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# redirect /blog/YYYY/MM/DD/[TITLE] -> /blog/[TITLE]
RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /blog/$4 [NC]
# continue chain, redirect /blog/[TITLE] -> /[TITLE]
RewriteRule ^blog/(.*)$ /$1 [L,NC,R=301]