我不是使用.htaccess的英雄,但我遇到了一個我認爲可能會導致它的問題。 第一個症狀:對數據庫進行的簡單更改(如用戶IP跟蹤)每次請求都完成了多次,而網站的輸出看起來還不錯。可能.htaccess導致循環?
後跟蹤我終於得出結論,這不是由數據庫本身引起的問題小時(100%確定),也不會被極其簡單一塊PHP代碼,我寫了(也100%地肯定) 。 不過,問題發生在不同的服務器上。我唯一的結論是它必須處理我的.htaccess文件。 對我來說,似乎每個請求在處理實際導致輸出的運行之前處理過幾次。
在我的public_html文件夾我把下面的.htaccess文件,這應該是每個請求重定向到「公共」文件夾:
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
在這種「公共」文件夾,我有另外一個.htaccess文件:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?requestedurl=$1 [PT,L] </IfModule>
該文件旨在處理每個使用index.php文件的請求。 注意:如果我重命名index.php文件並直接訪問它,則問題不會發生。
我根本沒有得到這種行爲,我希望這個星球上的任何人都這樣做。 在此先感謝, Hans
親愛animuson, 感謝您的快速回復。 您讓我意識到請求可能會導致次要請求(通過客戶端),從而給了我一個很大的線索。 不存在的文件也將被重定向到index.php。 例如:HTML指的是缺少favicon.ico文件。刪除該行修復了其中一個迭代。 我仍然需要找到一個,但我無法在HTML中找到它。 我會試着看看那個Apache日誌文件。謝謝。 對於請求的MIME類型進行PHP檢查並關閉任何不期待HTML的請求也是一個想法嗎? 再次感謝, Hans –
請求不會發送他們期望*接收的MIME類型,但瀏覽器可以收到它應該期待的提示(即使它仍未發送)。將所有資源(如CSS,圖像和JavaScript)包含在單個文件夾中並從重寫中排除該文件夾會更好。 – animuson
感謝您一起思考!我想我會試圖弄清楚如何排除應該排除在文件夾中的文件,而不是排除真正存在的文件。 另外:我刪除了問題的最後一個原因,所以它目前正常工作,沒有任何二次請求,這要感謝你。 –