2014-03-28 83 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