.htaccess发送请求到一个子文件夹的index.php

我已经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 

意思是任何存在的文件或目录的请求都不会被重写。