2014-03-28 53 views
0

我在我的目录中的.htaccess文件,我想了解,us.php更改为/约-US /和我用mod_mod_rewrite发生器所以要么但我可以做500内部服务器错误或它不起作用。所以,我检查我的Apache和已启用默认 - 我也证实了这一点使用的.htaccess的mod_rewrite不工作

 /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

工作:

一般来说,.htaccess文件使用相同的语法为主要 配置文件。你可以在这些文件中放入的内容由 AllowOverride指令决定。此指令在类别中指定 如果在.htaccess文件中找到它们,将会遵守哪些指令。 如果指令在.htaccess文件许可,被允许用于 该指令将一个覆盖段,指定什么样的价值 必须在设置AllowOverride为了该指令的文档。

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

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

谢谢,你的意思是我需要添加到我的.htaccess? – user3473245

+0

好,我这样做,但得到500服务器错误 – user3473245

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] 

还要考虑的网址是相对于Web根目录和您的htaccess文件是(见RewriteBase)。如果这是永久重定向,您应该让机器人知道[R = 301]。

+0

谢谢,是做了,成功地重新启动我的Apache和使用你的代码,我不明白的错误,而且它不工作 – user3473245

+0

哪里文件相对于Web根?他们是在/还是在一个子目录?尝试添加RewriteBase /如果前者或RewriteBase /路径/如果你在一个子目录中。无论哪种情况,您的htaccess应该位于Web根目录(/)中。 –

+0

除了我以前的回答,我的.htaccess位于public_html目录中的所有网站文件被收容。 – user3473245