我已经search了我的答案stackoverflow,但没有见过似乎工作。
我有一个框架,将所有请求发送到一个index.php文件。 当我将它安装在虚拟主机的根目录下时,一切正常:
http://domain/ http://domain/home http://domain/home/index
当我尝试在如下子目录中安装框架时,问题就发生了:
http://domain/blog/
请求如下:
http://domain/blog/home http://domain/blog/home/index
所有这些请求都应该发送到/ blog中的index.php文件
我目前的设置是:
http://domain/index.php – 这个文件只是打印出'我们在虚拟主机的根'这个框架没有安装在那里。
http:// domain / blog – 这工作正常
当我尝试去http:// domain / blog / home时,我得到了根index.php文件而不是框架。 我收到消息“我们在虚拟主机的根目录”。
我有以下.htaccess文件位于http://domain/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
任何帮助是极大的赞赏。
问候,
贾斯汀
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
意思是“如果不是js或ico …”转发到index.php。
所以,从本质上说,你的/博客级别的htaccess是说,如果它不是一个图像或CSS文件redirect到/blog/index.php
RewriteBase /blog
尝试没有正斜杠。
解决我的问题的答案是:
RewriteEngine On Options Indexes FollowSymLinks RewriteBase /blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
看来Multiviews正在抛弃它。
您正在testing的请求中是否存在目录中实际不存在的项目? 这些行:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
意思是任何存在的文件或目录的请求都不会被重写。