Htaccess Rewritecond或redirectmatch从URL前面删除查询字符串

时间:2011-04-02 19:33:35

标签: .htaccess rewrite

我记得redirectmatch无法处理问号,但我该如何匹配此网址:

http://www.mysite.com/es/?lang=es&url=index.php&option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etcetcetc`

在存在文件夹名称时从index.php之前删除lang=es&url=

如果我在使用?lang=es&url=查询字符串时从URL中删除/ es /文件夹,或者我可以在文件夹中从URL中删除查询字符串?lang=es&url=,我的问题就会解决是/ es /

大约有11种语言,国家代码为fr,de等,其中一种奇怪的是zh-CN。这刚刚超过了我的能力。感谢您花时间阅读本文,我们将非常感谢您的帮助。

编辑:现在主要工作。我只是在zh-CN语言中遇到一个小问题,因为它似乎与其他en,fr,de等语言不同,这些语言正在做我想要的,即使双击另一种语言也会保留英语。但是,zh-CN语言会使用http://www.seed-city.com/?lang=zh-CN&url=index.php&zh-CN

重定向到主页

我目前在我的htaccess文件中有这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/../
RewriteCond %{QUERY_STRING} lang=..&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/(zh-CN|zh-TW)/ [NC]
RewriteCond %{QUERY_STRING} lang=([a-z]{2}|zh-CN|zh-TW)&url=index.php&(.*) [NC]
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

我还有更多,但这是相关的部分。谢谢你的时间。 Natastna2。

1 个答案:

答案 0 :(得分:0)

如果我理解了您的要求,这将适用于.htaccess文件:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/es/
RewriteCond %{QUERY_STRING} lang=es&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

使用上面的角色,这样的网址为:http://www.mysite.com/es/?lang=es&url=index.php&option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etc

将被重定向到: http://www.mysite.com/es/index.php?option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etc

修改

根据您编辑的部分,这里是现在应该有效的重写规则:

RewriteCond %{REQUEST_URI} ^/../
RewriteCond %{QUERY_STRING} lang=..&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/(zh-CN|zh-TW)/
RewriteCond %{QUERY_STRING} lang=(zh-CN|zh-TW)&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%2 [R=301,L]