Php .htaccess mod#u rewrite不';行不通

Php .htaccess mod#u rewrite不';行不通,php,apache,.htaccess,Php,Apache,.htaccess,我的目录中有一个.htaccess文件,我想把about-us.php改为/about-us/,我使用了mod_mod_rewrite generator来实现这一点,但是我收到了500个内部服务器错误,或者它无法工作。因此,我检查了我的apache,并将其作为默认值启用-我还确认这是使用 /usr/local/apache/bin/httpd -l | grep rewrite 我得到 mod_rewrite.c 但就是这样,我的服务器是centos 6 我真

我的目录中有一个.htaccess文件,我想把about-us.php改为/about-us/,我使用了mod_mod_rewrite generator来实现这一点,但是我收到了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
非常感谢您的光临

通常,.htaccess文件使用与主文件相同的语法 配置文件。您可以在这些文件中放置的内容取决于 AllowOverride指令。本指令规定,在类别中, 如果在.htaccess文件中找到指令,将遵循哪些指令。 如果.htaccess文件中允许使用指令,则 该指令将包含一个覆盖部分,指定值 必须处于允许的范围内,才能允许该指令


允许超越所有

正如@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。这里给出了以下相反的情况

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

还考虑URL与Web根的关系,以及HTTAccess文件的位置(参见)。如果这是一个永久重定向,您应该使用[R=301]让机器人知道。谢谢,您的意思是我需要将此添加到我的.htaccess吗?谢谢,是的,这样做了,成功重新启动了我的apache并使用了您的代码,我没有收到错误,但它也不起作用。您的文件与web根目录相关的位置在哪里?它们是否位于/或在子目录中?如果在子目录中,请尝试添加RewriteBase/if-the-former或RewriteBase/path/。在任何一种情况下,您的htaccess都应该位于web根目录(/)中。除了我之前的答案之外,my.htaccess还位于所有网站文件所在的public_html目录中。

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