2014-02-07 34 views
-1

我想重寫所有的404到index.php,我使用PHP的parse_url()來確定要包含哪個文件(例如about-us.php,contact-us.php),並且我得到了一些非常奇怪的結果。如何使用cPanel URL將所有404的重寫爲index.php?

我正在通過的cPanel自動創建的 '開發' 網址: http://xxx.xxx.xxx.xxx/~mySite/

電流法

.htaccess文件包含以下內容:

RewriteEngine on 
RewriteBase /~mySite 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9-_.]+)$ index.php 

而且結果是一個混合包:

xxx.xxx.xxx.xxx/~mySite/contact-us渲染得很好。

xxx.xxx.xxx.xxx/~mySite/contact-us/phone將拋出一個404,它不會被mod_rewrite捕獲。

xxx.xxx.xxx.xxx/~mySite/about-us重寫爲服務器根(xxx.xxx.xxx.xxx/index.php)。

以前嘗試

ErrorDocument 404 /~mySite/index.php 

我也得到了類似的結果,除了以下:

xxx.xxx.xxx.xxx/~mySite/contact-us/phone重寫到index.php但我所有的CSS和JS包括關斷,因爲他們正試圖加載相對於/~mySite/contact-us而不是/~mySite

任何幫助?我正在走出我的想法。特別是contact-us工作正常,但about-us沒有?

+1

爲什麼不只是'ErrorDocument 404/index.php'? –

+0

Hi @MarcB,看到上面的新編輯。 – AJB

+0

很明顯,出於某種神祕原因,'ErrorDocument 404/index.php'對字符串'about-us'也不起作用。 – AJB

回答

1

首先不要使用cPanel預覽。這不是查看您的開發站點的好方法。誰知道它會如何影響規則。無論如何,控制面板也會出奇怪的事情。

使用您的real site域名預覽您的網站。你可以這樣做,我修改你的電腦上的HOST文件,只有你可以通過域名查看它。這little guide將告訴你如何編輯它。它需要2分鐘。

然後,這應該有助於更好地檢查事情。

很可能爲什麼錯誤文檔不起作用,因爲〜mySite很可能不是您的文檔根目錄。這通常是cpanel如何做預覽鏈接。所以你真正的錯誤文件應該可以像Marc B所說的那樣。

ErrorDocument 404 /index.php 

如果你想要一個mod_rewrite解決方案,這也應該工作。但我不會同時使用這兩個。

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$/[R=301,L] 

在一個側面說明,我認爲這是一般較好,使用戶知道被請求的頁面是不是一個真正的網頁,而不是有些人想的東西是錯誤的與您的網站,因爲它重定向到使用404頁到主頁。就像Facebook一樣,它給了你一個大大的讚賞,並說它的頁面不可用。我看過很多自定義的404頁面,這些頁面非常聰明,所以也許可能是時候去創造。

+0

非常好。像魅力一樣工作。我將從現在開始使用此方法,而不是來自cPanel的開發URL。謝謝你,傑克。 – AJB

相關問題