apache 2.4模块重写错误

时间:2013-11-01 12:27:16

标签: apache .htaccess

尝试使用模块重写生成动态Url,看起来好像做错了并且收到服务器错误!服务器遇到内部错误  我用过这段代码

<IfModule mod_rewrite.c>
 #Enable mod_Rewrite
 RewriteEngine on
 RewriteBase /project
 RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
 RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
 </ifModule>

该项目别名为C:/ project 任何指针,以实现m尝试?使用apche 2.4应该将.htacess保存在项目文件夹中吗?或conf文件夹? 我想实现这样的目标

localhost/project/index.php?departmentId=2/
localhost/project/science-d2/

两者都应该加载相同的页面

2 个答案:

答案 0 :(得分:0)

您正在使用无限循环,如下所示: 假设您的apache在某些配置文件中配置如下:

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml

您的重写规则可能会导致:

/project/index.php => /project => /project/index.php => /project => ...

在这种情况下,您无需重写。所以这里的解决方案是注释掉所有指令:

#<IfModule mod_rewrite.c>
# #Enable mod_Rewrite
# RewriteEngine on
# RewriteBase /project
# RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
# RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
#</ifModule>

答案 1 :(得分:0)

由于您使用的是Apache 2.4,请尝试将<IfModule mod_rewrite.c>替换为<IfModule rewrite_module>

所以最终的代码如下:

<IfModule rewrite_module>
    #Enable mod_Rewrite
    RewriteEngine on
    RewriteBase /project
    RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
    RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
</ifModule>

当然请确保在.conf文件中注释rewrite_module,以确保它已加载。