2017-09-05 101 views
1

我想问如何将htaccess文件中的查询字符串参数从同一个url重定向到没有查询字符串参数的相同url。例如,如果我的网址是www.example.com/abc.php?cid=5&scid=10,我想将其重定向到www.example.com/abc.php在htaccess文件中的URL重定向

请注意,url是相同的,只是查询字符串参数已在重定向中删除。我已经用单个查询字符串为urls写了htaccess文件代码,但有多个参数没有重定向。

这里是我的单个参数代码按预期工作:

RewriteCond %{QUERY_STRING} cid=7$ 
RewriteRule (.*) /contact-us.php? [R=301,L] 

它重定向contact-us.php?cid=7页面contact-us.php

但是当我exteding多个参数的代码并不重定向。以下是我已经写在这种情况下:

RewriteCond %{QUERY_STRING} cid=9$ 
RewriteCond %{QUERY_STRING} scid=14$ 
RewriteRule (.*) /stakeholders.php? [R=301,L] 

这一个应该stakeholders.php?cid=9&scid=14页面重定向到stakeholders.php页。有人能告诉我第二个代码有什么问题吗?

我也GOOGLE了它,但几乎所有的结果都是关于重定向从一个网址到另一个网址不是相同的URL与查询字符串参数删除。谢谢。

+0

您可能会在这里找到答案! https://stackoverflow.com/questions/44925043/beautify-the-url-for-api-by-htaccess-and-php – JaTurna

回答

1

您需要查询连接成一个条件,像这样:

RewriteEngine On 
RewriteCond %{QUERY_STRING} cid=9&scid=14 [NC] 
RewriteRule ^(.*)$ http://www.example.com/stakeholders.php? [R=301,NC,L] 

这会为cid=9&scid=14特定查询的工作,如果你想做到这一点对于任何查询,那么你可以使用cid=(.+)&scid=(.+)代替。

重写URL末尾的?会阻止原始查询出现在其末尾,并使用301重定向执行更改。