htaccess根据查询字符串

时间:2015-06-16 20:18:25

标签: php apache .htaccess redirect joomla

我搜索了类似的问题,但没有一个适用于我的情况。

我需要做的是从具有特定查询字符串的旧网址重定向:option=com_virtuemart到子域名:http://parts.domain.com

尝试了一堆规则和条件,但没有实现正确的重定向。它总是将我重定向到http://parts.domain.com/index.php?option=com_virtuemart

我尝试过的一些规则:

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC]
RewriteRule (.*) http://parts.domain.com/$1 [R=301,L]

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC]
RewriteRule http://parts.domain.com/? [L,NC,R=301]

和其他50条规则一样。我在这里犯了什么错误?

2 个答案:

答案 0 :(得分:1)

如果您在parts.domain.com root上,则可以在.htaccess中执行此操作。

这对我有用,你真的不需要一个可以使用^的捕获组。还要确保清除缓存。

RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC]
RewriteRule ^ http://parts.domain.com/? [L,NC,R=301]

或者你可以做这样的事情。

RewriteEngine On
RewriteCond %{THE_REQUEST} [A-Z]{3,}\ /+(index\.php)?\?option=com_virtuemart [NC]
RewriteRule ^ http://parts.domain.com/? [R=301,L]

答案 1 :(得分:0)

你只需要合并你的规则。

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC]
RewriteRule (.*) http://parts.domain.com/? [L,NC,R=301]

在第二个示例中,您尚未提供要匹配的正则表达式。