使用main参数重定向HTAccess,忽略所有其他参数

时间:2013-07-10 16:51:59

标签: .htaccess redirect

首先,我知道并了解如何根据参数重定向:)

我的问题是我需要根据提供的MenuID参数重定向所有链接,并忽略查询字符串中的任何其他信息,因为并非所有参数都用于每个网页请求,例如MENUID = 2738421;是新产品

http://www.domain.com/shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products& limit=5&page=24

,或者

http://www.domain.com/shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products&limit=20&page=3

,或者

http://www.domain.com/shop.php?menuid=2738421&menuref=Ja&page=12&limit=15

http://www.domain.com/new.html?page=x&limit=x

重定向的原因是搜索引擎已将这些页面编入索引,因此我需要对URL进行美化。

这实际上是否可以创建模糊重定向标准?

## 301 Redirects
# 301 Redirect 1 - works for this explicit URL, but need a partial result
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^new\.html$ http://www.monarchycatering.com/shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products&limit=5&page=24 [R=301,NE,NC,L]

感激不尽,感谢您提前

标记。

3 个答案:

答案 0 :(得分:0)

我不清楚你的出发点是什么以及你最终会在哪里结束。您是否有“漂亮”的网址要转换为您的脚本实际可以消化的“非漂亮”查询字符串?

  

重定向的原因是搜索引擎已编入索引   这些页面,所以我需要美化URL。

如果搜索引擎已经将查询字符串非漂亮版本编入索引,则他们现在必须使用漂亮的URL重新编制索引。同样适用于所有客户的书签。

如果你想在你的站点中生成“漂亮”的链接,并在重新进入非漂亮的查询字符串时解码它们(在.htaccess中),这应该可行。您的客户现有的书签甚至应该继续有效,而搜索引擎会用漂亮的网址取代非漂亮的书签。

答案 1 :(得分:0)

感谢您对我的问题感兴趣...

我已经重写了我网站的部分内容,Google仍然引用旧的MenuID参数和shop.php配置,但现在我将查询重写为更漂亮的格式,例如

http://www.domain.com/shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products&limit=5&page=24

现在是

http://www.domain.com/new.html&limit=5&page=24

页面代表产品类别,因此需要以更有意义的方式显示。客户书签不是问题,只要我可以重定向页面。

我希望这是有意义的,祝福,

标记。

答案 2 :(得分:0)

很抱歉延迟,但StackOverflow似乎无法标记已回复的答案并需要我注意。

好的,如果我理解正确的话,你会有传入"减少"现实世界中的半SEF网址(由您的链接生成),例如

http://www.domain.com/new.html&limit=5&page=24

("真实" SEF类似于http://www.domain.com/new/limit/5/page/24.html

并且您需要使用.htaccess将其映射到真实文件和更多查询字符串信息:

http://www.domain.com/shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products&limit=5&page=24

例如,您想要检测new.html,并用固定字符串 shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products&替换它,使用[QSA]标志将现有的查询字符串附加到结束?

RewriteEngine On
RewriteRule  ^new\.html  /shop.php?menuid=2738421&menuref=Ja&menutitle=New+Products [QSA]
RewriteRule  ^sale\.html  /shop.php?menuid=32424&menuref=Ja&menutitle=Products+On+Sale [QSA]
...etc...

我相信&如果用户提供了非空的查询字符串,它将停留在重写地址的末尾,但一定要以两种方式测试它。

P.S。它可能会更清洁使用"评论"回答我的问题,而不是添加另一个答案。