4

我正在构建一个 php 框架,将所有流量重定向到 ROOT/public/index.php,然后将 url 放入获取请求中。我的问题是我的 RewriteConds 不工作并且正在接受文件和文件夹名。

在根目录

<IfModule mod_rewrite.c>

 RewriteEngine on
 RewriteRule    ^$    public/    [L]
 RewriteRule    (.*) public/$1    [L]

</IfModule>

<files .htaccess>

 order allow,deny
 deny from all

</files>

在公共目录中

<IfModule mod_rewrite.c>

  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

</IfModule>
4

2 回答 2

1

[L]标志告诉 Apache 在规则匹配后停止重定向。因此,假设您的 ROOT 文件夹首先出现,它将在重定向处运行并停止,这将使第二个重定向无用。

要解决此问题,请执行以下操作:

 RewriteEngine on
 RewriteRule    ^$    public/   
 RewriteRule    (.*) public/$1   
于 2012-04-21T09:31:33.270 回答
0

如果您想将现有文件和目录重定向到您的脚本:

在公共目录中

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

我的 2 美分小费:取下?url$1零件,然后看看里面有什么$_SERVER['REQUEST_URI']

于 2012-04-21T09:01:51.813 回答