2012-10-21 65 views
0

我開發,使用PHP,HTML5和JavaScript的Web項目。現在我使用PHP來處理URL,當用戶刷新頁面以捕獲子目錄並重新計算頁面內容(因爲我使用的是Ajax而需要)時。mod_rewrite的奇怪行爲時,URL有兩個子目錄

好吧,everithing行之有效的這種方式,但要做到這一點,我需要重定向每一個請求到我的網頁的index.php調用名爲Controller.php這樣另一個文件。 要做到這一點,我用下面的.htaccess代碼:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/index\.php -f 
RewriteRule ^(.*)$ /MySubDirectory/index.php [QSA] 

我在本地主機上測試它,這樣的模式如下:

localhost/MySubDirectory/ 
localhost/MySubDirectory/something 

它的工作原理,但是當我添加一個新的文件夾:

localhost/MySubDirectory/something/somethingelse 

我得到的CSS奇怪的錯誤和javascript進口

Uncaught SyntaxError: Unexpected token < jquery-1.8.2.min.js:1 
Uncaught SyntaxError: Unexpected token < jquery-ui-1.9.0.min.js:1 
Uncaught SyntaxError: Unexpected token < SpriteAnimation.js:1 
Uncaught SyntaxError: Unexpected token < Bile.js:1 

感謝您的幫助。

+0

什麼的投擲的錯誤?您很可能不希望通過PHP傳遞JavaScript文件等靜態資源。 –

+0

我有一個header.php和一個footer.php,它加載了典型的head標籤,並且footer的所有內容都是可重用的。這是一種不好的做法嗎?如果是...如何解決? – droidpl

+0

這是一個不同的問題,它取決於網站。這是最簡單的方法,因此肯定不是一種習慣做法,除非需要額外的複雜性,但這個問題不應該討論。返回主題:您的重寫規則應該允許您的Web服務器直接提供圖像,js和css。 –

回答

1

問題是不是mod_rewrite的,但在引用該資源的鏈接。它們被視爲在重定向的子目錄上開始的相對路徑,這使得這些資源不被加載。 我解決它通過begining每個資源(JavaScript,CSS和圖像)以斜線,使他們絕對路徑,因爲他們以前沒有相對的。