我有一个文档结构,其中我在父目录中有一个名为Fort
的.htaccess
文件。在同一目录中,我有一个名为public
的文件夹。我在那个public
目录中有一个bootstrap.php
脚本。
这是我的.htaccess
代码:
RewriteEngine On
RewriteBase /Fort
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ bootstrap.php?url=$1 [QSA,L]
我正在使用 mamp,默认网址设置为localhost:8888/Fort/
.
我的bootstrap.php
脚本有以下代码:
<?php
echo $_GET['url'];
出于某种原因,当我传递一个网址说localhost:8888/Fort/foo/bar
时,我的bootstrap.php
脚本将网址返回为foo/bar
。但是如果我传递 urllocalhost:8888/Fort/
,我会收到一个403 Forbidden
错误,并且没有加载bootstrap.php
脚本。
好问题!感谢您提供所有信息。
将最后一行更改为:
RewriteRule ^(.*)$ bootstrap.php?url=$1 [QSA,L]
当您访问/Fort/
时,有一个空字符串供重写匹配,并且您正在匹配+
这意味着一个或多个字符,而实际上没有字符,因此它没有被触发。更改为*
表示零个或多个字符,这可以解决问题,现在将按预期匹配/Fort/
。