.htaccess mod_rewrite不起作用

时间:2014-03-28 15:34:59

标签: php apache .htaccess

我的目录中有一个.htaccess文件,我想将about-us.php更改为/ about-us /并且我使用mod_mod_rewrite生成器来执行此操作但是我得到500个内部服务器错误或它没有用。所以我检查了我的apache并且它已经启用为默认 - 我也已经确认这是使用

启用的
        /usr/local/apache/bin/httpd -l | grep rewrite

我得到了

       mod_rewrite.c

但就是这样,我的服务器是centos 6

我真的不知道还需要做什么,你们有什么想法吗?下面的代码是另一种尝试,但即使这样也不能正常工作

        RewriteEngine On

        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteCond %{REQUEST_FILENAME}\.php -f 
        RewriteRule ^(.*)/$ /$1.php

非常感谢提前

2 个答案:

答案 0 :(得分:0)

http://httpd.apache.org

  

通常,.htaccess文件使用与main相同的语法   配置文件。你可以放在这些文件中的是由   AllowOverride指令。该指令按类别指定   如果在.htaccess文件中找到它们,将会遵守哪些指令。   如果.htaccess文件中允许使用指令,则说明文档   该指令将包含一个Override部分,指定什么值   必须在AllowOverride中才能允许该指令。

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride

<Directory /var/www/>
        AllowOverride All
</Directory>

答案 1 :(得分:0)

正如@ava指出的那样,确保您的Apache服务器通过htaccess设置为允许目录级别的指令。您的重写规则似乎是倒退的。您声明要将文件(about-us.php)重定向到目录(about-us),但您的规则是相反的。

如果您只是重写一个文件,请明确这样做。

Rewrite On
# Rewrite specific file (not case sensitive, stop processing rules).
RewriteRule about-us.php about-us [NC,L] 

或者,您可以从所有文件中删除.php。以下是此处给出的the answer的反转。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*).php $1 [NC,L]

还要考虑URL与Web根目录的关系以及htaccess文件的位置(请参阅RewriteBase)。如果这是永久重定向,你应该让机器人知道[R = 301]。