使用 RewriteRule 将任何请求重定向到 PHP 脚本,无需外部重定向

Using RewriteRule to redirect any request to PHP script without external redirects

我使用 WampServer (Apache/PHP/MySQL),我的 www 目录中有以下文件:

我想将所有 URI 请求作为参数传递给 index.php 而不会导致任何外部重定向(客户端浏览器中的位置更改)。所以我尝试使用以下规则:

RewriteRule ^(.*)$ index.php?path= [nocase,qsappend,end]

效果很好,除非 URI 是 /test,在这种情况下,外部重定向会将位置更改为:

/test/?path=test

如何确保即使存在与 URI 同名的目录也不会发生外部重定向?


预期结果:

实际结果:

理想的解决方案是通用的,不仅适用于 test 目录,而且适用于任何目录。

好的,问题似乎是 mod_rewritemod_dir 之间的冲突。可能的解决方案是:

  1. 禁用mod_dir
  2. Put this to .htaccess:

    <IfModule mod_dir.c>
         DirectorySlash Off
    </IfModule>
    

有关 mod_rewritemod_dir 如何交互的更多详细信息,this answer has some excellent info. And why the external redirect is necessary is explained in docs (Trailing Slash Problem)


相关链接