我有以下.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(据我所知)正在将可见网址重写为 {{3} } ,这不是很漂亮。我相信它是因为上面的URL是一个指向我的/ admin /文件夹的有效URL,但是我希望我的.htaccess忽略这一点并发送此aswell,因此会发生一些冲突。到我的bootstrap.php(我的.htaccess的第4行)。我做错了什么?
以下是我的浏览器中的请求:
更新
奇怪的是, http://www.example.com/sandbox/admin/?route=admin.php 工作正常,但不是 http://www.example.com/sandbox/admin/ (请注意尾随斜杠)。
答案 0 :(得分:0)
如果您有真正的文件夹,则需要使用条件来忽略real
个文件和文件夹。所有其他请求将被路由到您的引导程序文件。 (如果我理解你的问题。)
RewriteEngine On
RewriteBase /sandbox/
RewriteRule ^(assets)($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ lib/script/bootstrap.php?route=$1.php [NC,L,QSA]