我有以下目录结构:
/var/www/html/
Project/
MVC/
AppDir/
Controllers/
Models/
Views/
Public/
index.php
我的apache配置文件中有以下代码
<Directory "/var/www/html/Project/MVC">
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /Project/MVC/Public/
RewriteCond %{REQUEST_URI} !^Public/img/[0-9a-zA-Z]+\.jpg$
RewriteRule ^.+$ index.php [L]
</IfModule>
</Directory>
这会导致无限重定向循环。当直接连接到基本MVC目录时,它也不会执行任何重定向:http://example.com/Project/MVC/
但是,如果我将index.php文件移动到MVC目录并将RewriteBase更改为如下所示:
RewriteBase /Project/MVC/
没有更多的重定向循环问题。并且,作为索引在我的web目录中的副作用,它在连接到上面的URL时加载我的index.php。但是,我更希望index.php位于我的公共目录中。
我意识到我可以使用这样的指令:
RewriteCond %{REQUEST_FILENAME} !-f
但我想不允许直接访问现有文件,只是将所有内容重定向到Public / index.php。我怎么能这样做?