【问题标题】:.htaccess redirect without changing address bar.htaccess 重定向而不更改地址栏
【发布时间】:2010-11-21 05:28:37
【问题描述】:

我正在尝试编写 .htaccess 规则来重定向到脚本,该脚本会进一步重定向到其他地方。有点像 URL 缩短器的工作方式。但是,我希望在重定向的 .htaccess 部分期间更改地址栏。 (脚本重定向可以改变位置。)

我正在使用mod_rewrite,目前正在这样做:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /
RewriteRule (.+)$ "?url=$1" [L,R=301]

我可以使用标志或其他方法来实现我想要做的事情吗?

附录:地址栏在 Firefox 中不会随着重定向的发生而改变,这是我想要做的。它只改变一次以反映终点。 Safari 每一步都会改变它。有什么办法可以避免吗?

【问题讨论】:

    标签: .htaccess redirect http-status-code-301


    【解决方案1】:

    如果您使用 R 标志,您是在告诉 mod_rewrite 您想要外部重定向,因此要求浏览器发出新请求并且地址栏应相应更改。

    如果没有R 标志,就没有重定向,而是对浏览器隐藏的 Apache 内部请求重写。因此,地址栏不会改变。但是,出于显而易见的原因,您不能使用内部重定向到外部 URI。

    由于您似乎使用内部重定向,只需删除 R 标志,它应该可以工作:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.+)$ ?url=$1 [L]
    

    【讨论】:

    • 对于外部 URI,您可以使用标志 [P] 代理它
    猜你喜欢
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2012-10-28
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多