.htaccess重写根目录禁止

时间:2016-12-27 18:12:18

标签: php apache .htaccess mod-rewrite

我有一个文档结构,其中我在父目录中有一个名为.htaccess的{​​{1}}文件。在同一目录中,我有一个名为Fort的文件夹。我在public目录中有一个public脚本。

这是我的bootstrap.php代码:

.htaccess

我正在使用mamp,默认网址设置为RewriteEngine On RewriteBase /Fort RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ bootstrap.php?url=$1 [QSA,L]

我的localhost:8888/Fort/脚本包含以下代码:

bootstrap.php

出于某种原因,当我通过网址<?php echo $_GET['url']; 时,我的localhost:8888/Fort/foo/bar脚本会将网址返回为bootstrap.php。但是,如果我传递了网址foo/bar,则会收到localhost:8888/Fort/错误,并且未加载403 Forbidden脚本。

1 个答案:

答案 0 :(得分:3)

好问题!感谢所有信息。

将最后一行更改为:

RewriteRule ^(.*)$ bootstrap.php?url=$1 [QSA,L]

当您访问/Fort/时,有一个空字符串供重写匹配,并且您匹配+这意味着一个或多个字符,当实际上没有字符时,所以它不是'被触发。更改为*表示修复问题的零个或多个字符,现在将按预期匹配/Fort/