我在我的 Windows 7 PC 上的 localhost 上托管了一个 PHP 网站,运行 XAMPP 1.8.2。
我有如下重写规则:
Options -Indexes +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?rt=$1 [QSA,L]
</IfModule>
重写 URL,使其始终变为:http: //mysite.com/index.php?rt=[controller]/[action]/[params]
它可以完美运行,直到我在处理以下网址时发现它失败: http://mysite.com/error/xxx 。它返回 404 状态,而不是转到http://mysite.com/index.php?rt=error/xxx 。(我的网站根文件夹下没有子目录调用错误/)
我仔细检查了我的 PHP 代码,我确信这不是原因,我将我的网站上传到远程服务器,一切都很好。所以我很确定我的 XAMPP (Apache) 中没有正确配置某些东西,这使得 /error/xxx 请求被不同地处理。
我还发现访问 http://mysite.com/error/给了我 403 但 http://mysite.com/[something_else]/很好。
以防万一,我也将我的 vhost.conf 粘贴在这里:
<VirtualHost *:80>
DocumentRoot "/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "E:\htdocs\mysite.dev"
ServerName mysite.dev
</VirtualHost>
以及相关的httpd.conf:
<Directory "E:\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
任何帮助表示赞赏!