了解mod_rewrite

时间:2016-04-14 17:39:37

标签: php apache mod-rewrite

我有以下目录结构:

/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。我怎么能这样做?

0 个答案:

没有答案