2016-12-15 57 views
0

我一直在寻找小时,但无法找到这个问题的工作解决方案。我正在重新设计一个网站,并需要将一堆旧网址重新定向到新网址。基本格式是这样的: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

任何有识之士都更受欢迎。

感谢, 约翰

回答

0

前两个没有被拾起这个重写规则,符合市场预期。

第三届实际上做的正是你要求它做的事情:

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网络选项卡,然后打开保存日志,如果你使用的是铬)

如果你打算查询字符串被剥离,那么你需要附加一个问号到重定向url:

RewriteRule^pages/all_inclusive_zeildag.php $/bedrijfsuitjes/volledig-verzorgd-zeilen /? [R = 301,NC,L]

此外,为了清晰起见,将RewriteCond语句与重写规则一起分组,因为它们仅适用于跟在它们后面的第一个RewriteRule。

祝你好运!

0

好的。感谢所有的投入。不知何故,它让我走上了正轨,最后我以

 

RewriteEngine On 
#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]