代码之家  ›  专栏  ›  技术社区  ›  aditya

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

  •  20
  • aditya  · 技术社区  · 15 年前

    我想写一篇 .htaccess 重定向到脚本的规则,该脚本将进一步重定向到其他位置。有点像URL缩短器的工作原理。然而,我 不要 希望地址栏在 HTAccess 部分重定向。(脚本可以重定向以更改位置。)

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

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

    是否有一个标志或其他方法可以用来实现我想要做的事情?

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

    1 回复  |  直到 14 年前
        1
  •  40
  •   Ferdinand Beyer    15 年前

    如果您正在使用 R 你说的旗子 mod_rewrite 外部重定向是您想要的,因此浏览器被要求发出一个新的请求,地址栏应该相应地改变。

    没有 R 标志,没有重定向,而是对隐藏在浏览器中的Apache内部请求进行重写。因此,地址栏不会改变。但是,由于明显的原因,您不能使用到外部URI的内部重定向。

    既然您似乎使用了内部重定向,只需删除 R 标志和它应该工作:

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