我已经在 StackOverflow 上搜索了我的答案,但我所看到的似乎没有任何效果。
我有一个将所有请求发送到index.php
文件的框架。当我将它安装在虚拟主机的根目录中时,一切正常:
http://example.com/
http://example.com/home
http://example.com/home/index
当我尝试将框架安装在子目录中时会出现问题,例如:
http://example.com/blog/
像这样的请求:
http://example.com/blog/home
http://example.com/blog/home/index
所有这些请求都应该发送到 /blog 中的 index.php 文件
我目前的设置是:
http://example.com/index.php
- 这个文件只是打印出“我们在虚拟主机的根目录中”。该框架未安装在那里。
http://example.com/blog
- 这工作正常
当我尝试访问时,http://example.com/blog/home
我得到的是根index.php
文件,而不是框架。我收到消息“我们在虚拟主机的根目录中”。
我有以下.htaccess
文件位于http://example.com/blog/.htaccess
.
RewriteEngine on
Options Indexes FollowSymLinks -MultiViews
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
任何帮助是极大的赞赏。
解决我的问题的答案是:
Multiviews似乎把它扔掉了。
表示“如果不是 js 或 ico...” 转发到
index.php
.因此,从本质上讲,您的
/blog
关卡.htaccess
是在说如果它不是图像或 CSS 文件,则将其重定向到/blog/index.php
.尝试不使用正斜杠。
您正在测试的请求是否针对目录中实际不存在的项目?这些行:
意味着对存在的文件或目录的任何请求都不会被重写。