mod_rewrite甚至现有的文件和文件夹

时间:2013-08-29 09:38:20

标签: apache .htaccess mod-rewrite

或者更好地说,除app.php路径外,将所有内容重写为/public/。我一直在寻找SO,但无法真正找到一个有效的解决方案。基本上我想要的是每个网址都会被路由到app.php / route,即使文件夹存在 - 除非已经为它做了例外。目前我只是为foo和bar获取403,但是它们应该被路由到app.php/fooapp.php/bar。另一方面,/public/不应该被重写。

其他一些很酷,但并不重要的是,网址/app.php/会被重写为app.php/app.php

在我的htaccess中我需要做些什么才能实现这种重写方式?


目录结构:

-| projects
  -| SomeSite
    -| foo
      - .htaccess [deny from all]
    -| bar
      - .htaccess [deny from all]
    -| public
      -| css
      -| js
      -| img
    - app.php
    - .htaccess [mod_rewrite is here]

我目前的重写htaccess:

DirectoryIndex app.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(/public|app\.php)$
RewriteRule ^(.*)$ app.php/$1 [QSA,L,NC]

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

DirectoryIndex app.php
Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_URI} !/(public|app\.php)(/.*|)$ [NC]
RewriteRule ^(.*)$ app.php/$1 [L]