HTACCESS重定向在url中添加不必要的参数

时间:2014-10-23 03:58:04

标签: php regex apache .htaccess url-redirection

htaccess重定向我们的网站流量。

我们使用以下代码

将EXAMPLE.com重定向到www.EXAMPLE.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]  

RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]  -

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html?|php)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html?|php)$  http://www.example.com/$1  [R=301,L] 

但我们面临的问题是: EXAMPLE.com/XYZ被重定向到WWW.EXAMPLE.com/?url=XYZ但是应该重定向到WWW.EXAMPLE.COM/XYZ

所以我们需要删除这个不必要的东西?url =

谢谢..

1 个答案:

答案 0 :(得分:1)

由于规则的错误顺序,这个问题正在发生。在路由规则之前保留重定向规则:

RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]  -

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html?|php)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html?|php)$  http://www.example.com/$1  [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]