我正在尝试编写.htaccess
规则以重定向到脚本,该脚本会进一步重定向到其他位置。有点像URL缩短程序的工作方式。但是,我不希望在重定向的.htaccess
部分期间更改地址栏。 (脚本重定向可以更改位置。)
我正在使用mod_rewrite
,目前正在执行此操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /
RewriteRule (.+)$ "?url=$1" [L,R=301]
我可以使用旗帜或其他方法来实现我想要做的事情吗?
附录:当重定向发生时,位置栏在Firefox中不会发生变化,这就是我想要做的。它只是改变一次以反映终点。 Safari会在每一步都更改。有什么办法可以避免吗?
答案 0 :(得分:40)
如果您使用R
标志,则告诉mod_rewrite
外部重定向是您想要的,因此要求浏览器发出新请求,地址栏应相应更改。< / p>
没有R
标志,没有重定向,但是从浏览器隐藏的Apache内部请求重写。因此,地址栏不会改变。但是,出于显而易见的原因,您无法将内部重定向用于外部URI。
由于您似乎仍在使用内部重定向,因此只需删除R
标记,它就可以正常工作:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)$ ?url=$1 [L]