无法启用 mod_rewrite

Posted

技术标签:

【中文标题】无法启用 mod_rewrite【英文标题】:Cannot enable mode rewrite 【发布时间】:2015-10-31 04:31:42 【问题描述】:

我想使用带有 Wampserver 的 mod_rewrite 从地址栏中删除“/index.php/”。 Codeigniter 框架建议使用此代码:

RewriteEngine on
#RewriteBase /
RewriteCond $1 !^(index\.php|img|table-images|robots\.txt|css|fonts|js|uploads|dbg-wizard\.php)
RewriteRule ^(.*)$ index.php/$1 [L]

这应该改变这个网址:

mysite.local/contact_us

到这里:

mysite.local/index.php/contact_us

这适用于 XAMPP,但使用 Wampserver 第一个 URL 会生成错误 404! 我使用 Apache 启用了 mod_rewrite,并且错误日志中没有错误。

更新:

我在 .htacess 中添加了 .blabla 但什么也没发生!这意味着 Apache 不读取 .htaccess!为什么?


我将 AllowOverride All 添加到 httpd-vhosts.conf。 Apache 没有执行 .htaccess 并且在 httpd.conf 中启用 AllowOverride 是不够的。

这是我的 httpd-vhosts.conf 文件:

<Directory E:\mysite\www>
Options Indexes FollowSymLinks Includes ExecCGI
#Order Deny,Allow   
#Allow from all 
AllowOverride All
Require all granted
</Directory>

【问题讨论】:

你的服务器重启了吗? 什么版本的 WAMPServer? 我每次都重新启动。我的 wampserver 是:“wampserver2.5-Apache-2.4.9-mysql-5.6.17-php5.5.12-32b” 检查指令AccessFileNameAllowOverride的值。 【参考方案1】:

要检查模式重写是否正常,请尝试以下步骤:

    在您的根目录中创建一个名为 htaccess_test 的文件夹

    创建一个.htaccess文件,将这些代码放入其中并保存。

        options +FollowSymLinks RewriteEngine On        
        RewriteBase /htaccess_test/ 
        RewriteCond %REQUEST_FILENAME !-f  
        RewriteCond %REQUEST_FILENAME !-d 
        RewriteRule ^([a-zA-Z0-9_-]+)/?$ user.php?u=$1
    

    再创建一个名为 user.php 的文件并将这些代码放入 这个并保存它。

    <?php
     if(isset($_GET['u']))
     echo $_GET['u'];
     
    

    现在转到浏览器类型http://localhost/htaccess_test/put_some_value_here。

如果这有效,则问题不在您的 apache 设置中。 确保您正在编辑正确的 .htaccess 文件。您需要编辑的 .htaccess 文件位于项目的根文件夹中,而不是应用程序或任何其他文件夹中。并把这些代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /root_directory_of_your_project/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

【讨论】:

以上是关于无法启用 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

金蝶创建管理中心无法启用数据库引擎的FTP服务

无法生成 deps.json 以启用迁移

无法在 Microsoft Lync 2010 中启用“显示脱机”

无法为应用程序脚本项目启用 BigQuery

似乎无法在 NSMenuItem 上设置启用:否

生成的 podman systemd 文件无法启用