【问题标题】:HTACCESS redirection adding unneccessary parametes in urlHTACCESS 重定向在 url 中添加不必要的参数
【发布时间】:2014-10-23 03:58:04
【问题描述】:

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=

谢谢..

【问题讨论】:

    标签: php regex apache .htaccess url-redirection


    【解决方案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]  
    

    【讨论】:

    • 感谢@anubhava 的回复,是的,我现在以错误的顺序对其进行排序,现在它可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2019-07-19
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多