2012-12-25 39 views
5

我正在運行支持HTML4哈希和HTML5 pushstate()的支持AJAX的站點。httpd.conf和HTML5 pushstate()

我剛剛遷移到AWS EC2實例(運行Apache的Linux服務器),並且這兩個站點運行良好。

我遇到過的唯一問題是當我刷新正確頁面顯示的HTML4哈希頁時。

然而,當我刷新HTML5頁面像http://www.datingjapan.co/conversations我收到以下錯誤信息:

enter image description here

看來,阿帕奇試圖進入該文件夾「converstations」而並非只是調用該網站「 index.php'然後使用jquery加載正確的頁面。

任何人都可以建議這裏可能是什麼問題。我假設它是一個httpd.conf設置。

THX

+0

我想你的意思是'pushstate()' - ['popstate'是一個事件,而不是函數](https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/popstate)。在這種情況下,「哈希標記」也不合適 - 如果你指的是包含'#'哈希字符的URL部分,那只是哈希,而不是哈希標記。 –

+0

謝謝你更新了這個問題.. – Adam

+0

非常歡迎。我已經更新了我的答案:「別名」不是要走的路。 –

回答

4

如果你想使用index.php文件爲某種類型的引導,你可能想嘗試這在您的.htaccess文件:

<IfModule mod_rewrite.c> 
   RewriteEngine on 
   RewriteCond %{HTTP_HOST} !^(www\.).+$ [NC] 
   RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] 

   RewriteCond %{REQUEST_FILENAME} !-f 
   RewriteCond %{REQUEST_FILENAME} !-d 
   RewriteCond %{REQUEST_FILENAME} !-l 
   RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

基本上,這將不帶www的所有請求重定向到www,然後如果它不是一個文件或目錄,將請求轉發到index.php文件。

+1

完美工作 - 放入網站.htaccess - 非常感謝... – Adam

+0

請注意,如果您將這些指令放入httpd.conf而不是.htaccess,則必須將它們放入Directory標記中,例如, Aaron

3

我沒有用pushState()自己,但如果瀏覽器發送一個請求/conversations到www.datingjapan.co,然後Apache會確實查找名爲「對話」的文件或文件夾的文檔根目錄,除非您告訴它做不同的事情。

如果你想在www.datingjapan.co所有URL由一個index.php文件進行處理,那麼你可以使用你的Apache設置the AliasMatch directive文件:

AliasMatch ^.*$ /index.php 

認爲這將導致在由index.php處理的所有URL中。 (我不是Apache配置非常熱的,所以我可能是錯的。)