【发布时间】:2015-08-10 06:49:42
【问题描述】:
我有以下 .htaccess:
RewriteEngine On
RewriteBase /sandbox/
RewriteRule ^(assets)($|/) - [L]
RewriteRule ^(.*)$ lib/script/bootstrap.php?route=$1.php [NC,L,QSA]
我正在做的是将所有请求(除了我的资产 - img、css、js)重定向到我的引导脚本,该脚本将通过 route 参数处理请求,其中包括 URL 请求.
这在大多数情况下都可以正常工作,除非我有电话,例如:
http://www.example.com/sandbox/admin,其中 admin 是存在于我的目录以及其他文件夹中的文件夹。该文件夹包含各种可访问的页面,以及一个 index.php 文件,默认情况下,我的 bootstrap.php 路由会将来自上述 URL 的请求重定向到该文件。
我的问题是,当我尝试点击页面时:http://www.example.com/sandbox/admin,我的 htaccess(据我所知)正在将可见 URL 重写为 http://www.example.com/sandbox/admin/?route=admin.php,这不是那么漂亮。我相信这是因为上面的 URL 是指向我的 /admin/ 文件夹的有效 URL 的事实存在一些冲突,但我希望我的 .htaccess 忽略这一点并将其发送到我的 bootstrap.php(第 4 行)我的.htaccess)。我做错了什么?
这是来自我的浏览器的请求:
更新:
奇怪的是,http://www.example.com/sandbox/admin/ 可以正常工作,但 http://www.example.com/sandbox/admin 却不行(注意尾部的斜杠)。
【问题讨论】:
-
您的规则似乎不会导致这种情况,但您的浏览器可能正在缓存较早的尝试。在私人/隐身窗口或其他浏览器中尝试一下。你有同样的行为吗?如果没有
[R]或其他域,我看不到您的规则将如何导致完整的浏览器重定向。 -
是的,似乎仍然在 icognito 中这样做;还尝试重新启动我的服务器。那么在我的浏览器中被重写的 URL 只能由重定向引起?
-
是的 - 如果您查看浏览器的网络控制台,您应该会看到它首先请求
/sandbox/admin,然后通过 301 或 302 重定向到/sandbox/admin/route=admin.php。您在 .htaccess 中还有其他内容吗?还是您发布了所有内容? -
这就是我所有的 .htaccess。我将添加我在控制台中看到的内容,我相信我看到的正是您所描述的内容。
标签: php apache .htaccess mod-rewrite