【问题标题】:Stop Apache mod_rewrite affecting Redirect rules停止影响重定向规则的 Apache mod_rewrite
【发布时间】:2014-01-21 19:53:41
【问题描述】:

我有以下 .htaccess 文件:

Redirect 301 /test/example-1 /test/example-2

RewriteEngine On
RewriteBase /test/
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]

我希望在没有 mod_rewrite 干扰的情况下进行重定向,但是当您点击 /test/example-1 时,它会重定向到 /test/example-2?_url=example-1

有没有办法阻止重写规则中的查询参数附加到重定向 URL?谢谢。

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    将您的重写规则设置为:

    RewriteEngine On
    RewriteBase /test/
    
    RewriteCond %{REQUEST_URI} !/(example-1|index\.php) [NC]
    RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]
    

    但一般情况下,您不应将mod_alias 规则与mod_rewrite 规则混用。你的代码可以改写为:

    RewriteEngine On
    RewriteBase /test/
    
    RewriteCond %{THE_REQUEST} /example-1[\s?/] [NC]
    RewriteRule ^ example-2 [R=301,L]
    
    RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]
    

    【讨论】:

    • 谢谢。唯一的问题是可能有很多重定向,我有点希望有一种方法可以让 Apache 在 mod_rewrite 执行任何操作之前处理重定向?保存有任何重复等。
    • 谢谢,你说得对,我应该用 mod_rewrite 来处理所有事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2023-03-18
    相关资源
    最近更新 更多