2016-12-27 156 views
1

我有一个文件结构,其中我有一个名为Fort的父目录中的.htaccess文件。在同一个目录中,我有一个名为public的文件夹。我在public目录中有一个bootstrap.php脚本。.htaccess重写根目录被禁止

这里是我的.htaccess代码:

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']; 

出于某种原因,当我通过一个URL说localhost:8888/Fort/foo/bar,我bootstrap.php脚本返回网址为foo/bar。但是,如果我通过网址localhost:8888/Fort/,我得到一个403 Forbidden错误,并且bootstrap.php脚本未加载。

回答

3

好问题!感谢所有的信息。

更改最后一行是:

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

当您访问/Fort/有一个空字符串重写匹配,和你匹配+这意味着一个或多个字符,当有事实没有字符,所以它没有被触发。更改为*表示解决问题的零个或多个字符,现在按预期匹配/Fort/

+0

现在,当我使用该代码没有错误,而是我只是得到常规的Apache目录根。我该如何解决这个问题,以便我的'bootstrap.php'脚本可以回显出事情? –

+0

尝试删除行'RewriteCond%{REQUEST_FILENAME}!-d'。并请接受我的答案,因为它解决了您询问的错误。 – SuperDuperApps

+0

@ user249325修复它!谢谢! –