2017-08-07 86 views
0

我一直在使用pushstate來管理站點導航的項目。該項目目前託管在Godaddy共享主機帳戶上,我剛剛使用HTTPD設置了Amazon EC2 Linux服務器,並將文件傳輸到新服務器。例如,我不得不添加一個.htaccess文件來幫助執行pushstate導航,以便它不會出現404錯誤。.ht訪問不能在亞馬遜linux服務器上工作

當我嘗試訪問像godaddy服務器上的http://example.com/page1這樣的頁面時,它的行爲應該如此 - 它不會嘗試訪問實際頁面,而是使用根頁面並追加url路徑/ page1,並且我的JavaScript負責直觀地顯示page1的內容。但是,在亞馬遜服務器上,它將我帶到404頁面。我對.htaccess和push狀態相當陌生,所以我不得不在堆棧溢出中找到我能找到的東西,以幫助我實現這一目標(至少在Godaddy服務器上)。這裏的文件:

RewriteEngine On 
RewriteRule ^([^/d]+)/?$ index.html?id=$1 [QSA] 

不知道如果我用正確的方法也不知道爲什麼一臺服務器會給我不同的結果,以其他?

感謝

編輯

所以我已經設置了allowOveride所有在我的httpd.conf文件按如下:

<Directory "/"> 
    AllowOverride All 
</Directory> 

這裏值得注意的是我使用的httpd而不是Apache2--我不確定這是否可以改變,但似乎是相同的過程。我也使用sudo service httpd restart重新啓動服務器,但它仍然是相同的結果。我確實嘗試了vhost選項,雖然我不記得我爲它寫的是什麼,但我已將它應用於*/80,所以我相當確定它是正確寫入的。

是否有任何其他步驟可以用來進一步調試,並試着確切地指出它出錯的地方?

回答

0

請爲波紋管設置檢查您的Apache2配置(/etc/apache2/apache2.conf中):

<Directory "/"> 
AllowOverride None 
</Directory> 

,將不允許使用服務器設置在自定義設置覆蓋。 htaccess文件。所以,如果你發現在你的Apache2配置,你有兩個選擇:

1)AllowOverride All取代它,保存配置並重新啓動的Apache2服務(應用服務器寬)

2)離開,因爲它並添加AllowOverride All嚴格遵守您網站的虛擬主機配置(僅適用於添加虛擬主機的虛擬主機)。

+0

感謝您提交一個答案波格丹,我剛剛更新了我的問題,請看看 –

+0

apache webserver是在ubuntu/debian(as CentOS發行版中的httpd)下的apache2。我會檢查/ var/log/httpd/error_log查看是否有任何可能提供關於您的問題或任何特定的虛擬主機訪問/錯誤日誌文件的信息的條目 –

+0

我在錯誤日誌中收到的錯誤是File不存在:/ var/www/html/site-feedback這對我來說建議.htaccess文件沒有被拾取或服務器不允許覆蓋.. –