.htaccess 重定向而不更改地址栏
Posted
技术标签:
【中文标题】.htaccess 重定向而不更改地址栏【英文标题】:.htaccess redirect without changing address bar 【发布时间】: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 每一步都会改变它。有什么办法可以避免吗?
【问题讨论】:
【参考方案1】:如果您使用 R
标志,您是在告诉 mod_rewrite
您想要外部重定向,因此要求浏览器发出新请求并且地址栏应相应更改。
如果没有R
标志,就没有重定向,而是对浏览器隐藏的 Apache 内部请求重写。因此,地址栏不会改变。但是,出于显而易见的原因,您不能使用内部重定向到外部 URI。
由于您似乎使用内部重定向,只需删除 R
标志,它应该可以工作:
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteRule (.+)$ ?url=$1 [L]
【讨论】:
对于外部 URI,您可以使用标志 [P] 代理它以上是关于.htaccess 重定向而不更改地址栏的主要内容,如果未能解决你的问题,请参考以下文章