4

我的 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。

4

1 回答 1

0

看到这个答案:

easyphp 和 .htaccess

EasyPHP 中默认安装的 Apache 没有激活使用 .htaccess 文件修改文件夹中的服务器配置的选项。

您必须告诉 Apache 可以使用 .htaccess 文件更改哪些配置,以及在哪个文件夹中。要在主 Web 服务器上启用所有配置更改,您应该编辑 http.conf(在 Apache/conf 文件夹中),并查找

希望这可以帮助 :)

于 2015-11-30T12:07:49.163 回答