10

我的脚本有问题。它不适用于需要工作的 htaccess 文件。这是 htaccess 包含的内容。我正在尝试将其安装在 wamp localhost 上。代码是:

#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]

Options All -Indexes

如果我删除它,它会起作用:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]

但是这样脚本加载但每个页面都显示错误404。有没有办法解决这个问题?

4

4 回答 4

19

看起来您没有加载重写模块。找到您的 httpd.conf 文件并确保未注释此行(或类似内容):

LoadModule rewrite_module modules/mod_rewrite.so
于 2013-11-01T14:44:17.137 回答
2

检查您是否已加载 apache 重写模块。

转到 wamp_manager -> apache -> 模块并在列表中查找 rewrite_module。

如果它旁边没有 TICK,请单击它。Apache 将被反弹(停止,启动)。再试一次。

如果没有加载所需的模块,重写引擎将无法工作。

于 2015-02-16T18:36:26.627 回答
1

我有同样的问题。要取消注释该行,请删除 LoadModule rewrite_module modules/mod_rewrite.so 行前面的 #

在 Wamp 为我工作。

httpd.conf文件目录:C:\wamp\bin\apache\apache2.4.9\conf

于 2014-05-23T09:43:43.170 回答
1

这是为我解决问题的一种解决方案。重写模块始终启用,在 IfModule rewrite_module 中使用,授予权限并且 .htaccess 内容很好,但尝试使用重写模块仍然是 500 错误。

In httpd.conf by default:

This is a source of a 500 error if you try to use rewrite in .htaccess in some sub directory.

` 
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
`    

因此,可能希望在特定目录中使用 .htaccess 和重写模块。您将<directory>为该目录添加一个块。如果复制并粘贴目录块,您需要确保您复制的块的意图对于您要应用它的目录是正确的。

因此,对于我的意图,这个块会导致 403 错误,但确实摆脱了 500 错误。

<Directory "c:/Apache24/htdocs/store">
    AllowOverride All
    Options None
    Require all granted
</Directory>


Changing to this solved the issue:

<Directory "c:/Apache24/htdocs/store">
    AllowOverride All
    Require all granted
</Directory>

我想这就是为什么这个问题很常见,但很少在这些线程中解决。如果我只是复制了一个不同的块,键入了我自己的块,或者对我在做什么有任何了解,这不会是一个问题。

我不能说这解决了每个人的问题,但我讨厌人们解决并运行而没有启发我们其他人。所以对于那些犯了我错误的人,这就是答案。

于 2016-09-09T14:05:56.647 回答