开发者

.htaccess redirect conflicts with another htaccess rule that I can not remove

开发者 https://www.devze.com 2023-01-14 10:49 出处:网络
The Information: So I am fairly new to .htaccess and have being reading a bit. Basically I want to do this, redirect the url www.example.com/center-pro to www.example.com/pro-hq

The Information:

So I am fairly new to .htaccess and have being reading a bit.

Basically I want to do this, redirect the url www.example.com/center-pro to www.example.com/pro-hq (found how here here .htaccess URL redirect)

However the site i am work on already has a .htaccess file in place.

This is what I am adding doing :

Options +FollowSymLinks  #alread开发者_Python百科y in htaccess file
RewriteEngine On         #already in htaccess file

Redirect 301 /center-pro http://www.example.com/pro-hq    #line I added


RewriteCond %{REQUEST_FILENAME} !-f   #already in htaccess file
RewriteCond %{REQUEST_FILENAME} !-d   #already in htaccess file
RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}   #already in htaccess file

The last line seems to be messing with my redirect

So the output from my redirect looks like this : www.example.com/pro-hq?idstring=center-pro

The Question:

Is there any way to have the redirect rule above and keep the current .htaccees so I don't mess up the current site settings.

** note: Doing a RewriteRule works but i would like to use a redirect so people don't share the wrong url.


You can use mod_rewrite for your external redirection too:

RewriteRule ^center-pro$ http://www.example.com/pro-hq [R=301,L]

This is probably the simplest solution, in place of your current Redirect. The problem is that mod_rewrite performs its work before mod_alias, and while the rewritten URI path is not passed along, the modified query string unfortunately is. You could also condition your RewriteRule to prevent it from processing the path you want handled by mod_alias, but I prefer the first option:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_URI} !^/center-pro
RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}

Additionally, for your currentRewriteRule, you can just use the QSA flag instead of manually appending the query string to the URL:

RewriteRule ^(.*) index.php?idstring=$1 [QSA]
0

精彩评论

暂无评论...
验证码 换一张
取 消