我的目录中有一个.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
非常感谢提前
答案 0 :(得分:0)
通常,.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]。