.htaccess重定向而不更改地址栏

时间:2009-08-20 07:19:20

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

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

我正在使用mod_rewrite,目前正在执行此操作:

RewriteEngine On

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

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

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

1 个答案:

答案 0 :(得分:40)

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

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

由于您似乎仍在使用内部重定向,因此只需删除R标记,它就可以正常工作:

RewriteEngine On
RewriteBase /

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