2011-08-10 35 views
0

我剛剛從一個標準的共享服務器移動到一個centos5.5與Apache - 我也是使用Apache的新手。Apache和.htaccess

我以前的共享主機.htaccess文件有以下內容;

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^mywebsite.com 
RewriteRule (.*) http://www.mywebsite.com/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z0-9]+)$ /index.php?_url=$1 [NC,L,QSA] 

將上述內容添加到Apache中使用的步驟是什麼?即:什麼控制檯命令,什麼文件必須打開,我把我的htaccess文件中的所有上述所有?

謝謝!

+0

這肯定會有助於http://httpd.apache.org/docs/current/mod/mod_rewrite.html 作爲一種快速且不保證工作的解決方案,您可以將該文件放入您的網站根目錄。 – J0HN

+0

@ J0HN:謝謝,但即使使用web根目錄下的.htaccess文件,重定向也不起作用。 – Justine4601

+0

也許你禁用了mod_rewrite? 檢查出http://stackoverflow.com/questions/7007041/change-url-in-codeigniter/7007124#7007124有一些說明 – J0HN

回答

1

上面是一個Apache .htaccess文件 - 只需將它放入新的Web根目錄即可。

+0

謝謝,但重定向不起作用:(文件放在我的根(/ home/user/www/html這是我的文件根目錄 – Justine4601

0

有針對此問題的幾個可能的原因:

  • .htaccess文件沒有爲你的Apache啓用,或者他們使用不同的名稱。您應該檢查配置中的'AccessFileName'選項。它應該是這個樣子:

AccessFileName .htaccess

  • .htaccess文件被啓用,但可能僅限於禁止重寫規則。你應該看看在你的配置的東西沿着線:

AllowOverride None

如果你發現,在適用於您的網站的地方,你可以把它改成(我認爲)

AllowOverride FileInfo

允許規則理線爲您的網站唱歌。

  • mod_rewrite以某種方式被禁用。我不認爲這可能是這種情況,因爲如果是這樣的話,我認爲當Apache試圖解析你的.htaccess文件時你會得到一個錯誤。但是,您可以通過尋找你的Apache配置這樣一行證實了這一點:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

  • 東西在你的設置改變以某種方式導致這些規則失敗。這看起來不太可能,但是如果您有權訪問apache conf文件,那麼您可以考慮打開RewriteLog以瞭解可能發生的情況。

最後,只是假設你寧可不使用.htaccess文件由於某些原因(肯定有一些理由反對),你可以把你的重寫規則成幾個不同的地方,根據您的設置。你可以把它們放在你的指令或初學者的指令中。Apache docs重寫規則是相當不錯的,我強烈建議檢查出來。