我的 mod_rewrite 无法正常工作。这是 mod_rewrite 部分:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
# Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
它在 Ubuntu 和 OS X 上就像一个魅力,但在 Windows 下的 EasyPHP 上却失败了。我在 apache 配置中取消了以下行的注释:
LoadModule rewrite_module modules/mod_rewrite.so
而且我已经将每一个 AllowOverride 指令都设置为 All(它只是一个本地服务器,所以就安全性而言它是无关紧要的)。我希望 mod_rewrite 启用的特定 vhost 的 vhost 条目如下:
<VirtualHost 127.0.0.1>
DocumentRoot "E:/Dropbox/Websites/mysite/public"
ServerName myvhost.mysite
<Directory "E:/Dropbox/Websites/mysite/public">
Options FollowSymLinks Indexes
RewriteEngine On
AllowOverride All
Order allow,deny
Allow from all
#Deny from all
Require all granted
</Directory>
</VirtualHost>
如果我在我的公共文件夹中的 index.php 文件的顶部放置一个“死”,它永远不会发生,所以显然 mod rewrite 甚至从未尝试将它重定向到 index.php。我得到的只是404。