我们有多个旧网址,例如:
blog/index.php?d=26&m=12&y=11
blog/index.php?m=03&y=12&d=22&entry=entry120322-135153
blog/index.php?m=06&y=12&d=&entry=entry120602-191105
blog/index.php?d=19&m=02&y=12
逻辑总是在index.php之后?d,?m或?y。
我需要将这些全部重定向到:
www.domain.com/blog
我从这里尝试了几种不同的方法,但似乎是混合逻辑。
根据TerryE建议,当我输入链接时
http://www.coreyogaasia.com/blog/index.php?m=12&y=11&d=26&entry=entry111226-110412
在我的浏览器中,它解析为
http://www.coreyogaasia.com/blog/?m=12&y=11&d=26&entry=entry111226-110412
(删除了index.php)。但是,它不会
http://www.coreyogaasia.com/blog
我也把它放在wordpress上面:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
答案 0 :(得分:1)
您需要使用 QUERY_STRING 条件来查看参数,例如:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^(d|m|y)=\d
RewriteRule blog/index.php http://www.domain.com/blog? [R=302,L]
如果你想保留参数,那么放弃?在重定向字符串中。但是,如果你这样做并且目标重定向到同一目录,那么你需要额外的条件来阻止方向循环。
一旦你完成了这项工作,就把302换成301.有关详情,请参阅Tips for debugging .htaccess rewrite rules。
如果.htaccess
中有DOCROOT/blog
,则需要在RewriteBase下方和第一个WP cond /规则上方插入此内容:
RewriteCond %{QUERY_STRING} ^(d|m|y)=\d
RewriteRule index.php http://www.domain.com/blog/? [R=302,L]