难以从.htaccess获得正确的重定向

时间:2013-06-30 19:45:26

标签: .htaccess url redirect

我很难从.htaccess获得正确的重定向。我正在尝试的重定向如下:

原始网址:

http://www.mysite.com/index.php/contact-us?id=12

应该直接:

http://www.mysite.com/index.php/new-contact-request-form

我尝试了以下样品的各种变化而没有运气。关于我哪里出错的任何想法?

示例1:

Redirect /index.php/contact-us?id=12 http://www.mysite.com/index.php/new-contact-request-form

示例2:

RewriteCond %{QUERY_STRING} ^index.php/contact-us?id=12$

RewriteRule ^index\.php\/new\-contact\-request\-form$ http://www.mysite.com/? [R=301,L]

示例3:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.mysite\.com\/index\.php\/contact\-us\?id\=12$

RewriteRule ^/?$ "http\:\/\/www\.mysite\.com\/index\.php\/new\-contact\-request\-form" [R=301,L]

1 个答案:

答案 0 :(得分:0)

网址结构:  enter image description here

%{QUERY_STRING}变量包含url查询字符串(在我们的例子中id = 12),

另一方面,RewriteRule仅在url路径上运行(不包括查询字符串),

所以基本上,下面的代码检查查询字符串是否等于id=12以及url路径是否等于index.php/contact-us,如果是,则会发生重定向

RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=12$
RewriteRule ^index\.php/contact\-us$ /index.php/new-contact-request-form? [R=301,L]