使用多个查询重定向
Posted
技术标签:
【中文标题】使用多个查询重定向【英文标题】:redirect with multiple query 【发布时间】:2017-05-01 03:14:08 【问题描述】:我已经搜索了几个小时,但找不到解决此问题的有效解决方案。我正在重新设计一个网站,需要将一堆旧网址重定向到新网址。基本格式类似于:pages/page.php?m=22&p=33
应该转到mainpage/subpage/
之类的东西,同时完全忽略所有参数。在尝试了多种变体之后,我目前在我的 htaccess 中有这个(作为 Wordpress 网站的一部分)。当 url 中有 2 个参数进行重定向而不是 1 或无时,就会出现问题。
# REDIRECTS FROM OLD WEBSITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
# custom redirects
Options +FollowSymLinks -MultiViews
RewriteCond %QUERY_STRING ^m=([0-9]+)&p=([0-9]+)$ [nc]
RewriteRule ^pages/all_inclusive_zeildag\.php$ /bedrijfsuitjes/volledig\-verzorgd\-zeilen/ [R=301,NC,L]
</IfModule>
# END REDIRECTS OLD WEBSITE
# BEGIN WordPress
all the usual wp code
#
# END WordPress
我几乎已经完成了这项工作。问题是第二个参数。正确重定向的是: pages/all_inclusive_zeildag.php?m=8 如果我在没有任何参数的情况下重定向。
但问题是:/pages/all_inclusive_zeildag.php?m=8&p=22 导致 404
欢迎任何见解。
谢谢, 约翰
【问题讨论】:
【参考方案1】:正如预期的那样,此重写没有选择前两个。
第三个实际上正在做你要求它做的事情:
http://57755478.swh.strato-hosting.eu/pages/all_inclusive_zeildag.php?m=8&p=22
导致 301 指向: http://57755478.swh.strato-hosting.eu/bedrijfsuitjes/volledig-verzorgd-zeilen/?m=8&p=22
(使用 devtools 网络选项卡,如果您使用的是 chrome,请打开保留日志)
如果您打算剥离查询字符串,那么您需要在重定向 url 中附加一个问号:
重写规则 ^pages/all_inclusive_zeildag.php$ /bedrijfsuitjes/volledig-verzorgd-zeilen/? [R=301,NC,L]
同样为了清楚起见,将 RewriteCond 语句与重写规则组合在一起,因为它们仅适用于它们之后的第一个 RewriteRule。
祝你好运!
【讨论】:
【参考方案2】:在处理重写规则时查看发生了什么的“不错”方法是使用Apache 2.2 mod_rewrite 中的RewriteLog 和RewriteLogLevel 指令:
RewriteEngine On
RewriteLog /var/log/httpd/rewrite.log
RewriteLogLevel 3
或者在Apache 2.4 mod_rewrite 中使用常规的LogLevel 指令:
LogLevel alert rewrite:trace3
另请参阅:https://wiki.apache.org/httpd/RewriteLog、https://***.com/a/9632952/832620
【讨论】:
【参考方案3】:好的。感谢所有的投入。不知何故,它让我走上了正轨,我最终得到了
重写引擎开启 #RewriteCond %SCRIPT_FILENAME !-f RewriteRule ^pages/all_inclusive_zeildag\.php /bedrijfsuitjes/volledig-verzorgd-zeilen/%1? [L,R=301,NC] RewriteRule ^pages/avondopleiding\.php /leren-zeilen/avondles-zeilen/%1? [L,R=301,NC]【讨论】:
以上是关于使用多个查询重定向的主要内容,如果未能解决你的问题,请参考以下文章