我遇到了脚本问题。它不适用于需要工作的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.有没有办法解决这个问题??
答案 0 :(得分:16)
看起来你没有加载重写模块。找到你的httpd.conf文件并确保取消注释这一行(或类似的东西):
LoadModule rewrite_module modules/mod_rewrite.so
答案 1 :(得分:2)
检查是否已加载apache重写模块。
转到wamp_manager - > apache - >模块并在列表中查找rewrite_module。
如果它旁边没有TICK,请单击它。 Apache将被退回(停止,开始)。再试一次。
如果没有加载所需的模块,重写引擎将无法工作。
答案 2 :(得分:1)
我遇到了同样的问题。要取消注释该行,请删除该行前面的# LoadModule rewrite_module modules / mod_rewrite.so
在Wamp为我工作。
httpd.conf文件的目录:C:\ wamp \ bin \ apache \ apache2.4.9 \ conf
答案 3 :(得分:0)
这是一个为我解决问题的解决方案。 Rewrite模块始终启用,在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>
我认为这就是常见问题的原因,但很少在这些主题中得到解决。如果我只是复制了一个不同的块,输入了我自己的块,或者对我正在做的事情有任何了解,那就不会有问题了。
我不能说这解决了每个人的问题,但我讨厌当人们解决并运行而没有启发我们其他人的时候。对于那些犯了我错误的人来说,这就是答案。