2011-11-28 101 views
0

我有下面的代碼://localhost/.htaccess ...Apache的鏈接目錄用PHP執行

AddType application/x-httpd-php5 .css .js 

RewriteEngine on 
RewriteRule .*\/scripts(.+) scripts$1 [QSA] 
RewriteRule .*\/themes(.+) themes$1 [QSA] 
RewriteRule !\.(css|xhtml|xml|zip)$ rewrite.php 

目標:爲了能夠在使用文件://本地主機/腳本/和:// localhost/themes /目錄爲多個站點。使用QSA標誌,我已經能夠訪問目錄和文件(來自兩個目錄)。

所以......

://本地主機/ site1的/腳本/

://本地主機/站點2 /腳本/

...都...訪問

:// localhost/scripts/

...以及當然目錄中的所有文件。

問題:我不確定如何使用此設置來調整.js和.css文件中的PHP執行。在我當前的設置中,我使用PHP覆蓋了mime/media類型的文件。我試着重新排序代碼,但我不確定這是一個執行順序問題。示例中的JavaScript文件被作爲「application/x-httpd-php5」提供,而不是實際執行PHP。

澄清

  • 重寫規則的文件擴展名被截斷故意如此忽視。

  • 這與重定向完全無關。

  • 我試過符號鏈接,但顯然這個別名命令只能在服務器配置中使用。

  • 假設我完全不能訪問服務器配置,我只能使用.htaccess(我需要最終在共享主機上的實時環境中對此進行鏡像)。

  • 我已經重新安排了這些命令,甚至在衆多的組合中使用了單獨的.htaccess文件。

+0

我已經讀了三次現在,我不知道你想解決什麼問題。你能否提供澄清(1)你試圖達到的路徑,(2)你認爲它應該映射到的路徑,以及(如果可能,3)/var/log/apache/error.log條目顯示什麼它試圖重新映射路徑而不是? –

+0

不知道是什麼問題。在PHP文件中遇到什麼樣的問題?你確定這是要走的路嗎? –

+0

示例中的JavaScript文件將作爲「application/x-httpd-php5」提供,而不是實際執行PHP。對不起,沒有具體說明。 – John

回答

0

原來我不知何故結束了混合AddHandlerAddType

AddHandler application/x-httpd-php .js 
AddType text/javascript .js 

RewriteEngine on 
RewriteRule .*/scripts(.+) scripts$1 [QSA] 
RewriteRule .*/themes(.+) themes$1 [QSA] 
RewriteRule ^(|site1/|site2/|file\.php) - [L] 
RewriteRule !\.(css|xhtml|xml|zip)$ rewrite.php 
0

是的,如果我「下載」文件,並期待在我看到的PHP代碼使用JavaScript沿源。

然後你的AddType字符串不正確。

最簡單的方法可能是詢問供應商確切需要的字符串 - 它因服務器而異。

我個人根本不會這樣做,但是:它會導致所有的css和js文件被PHP解釋器解析,這對於服務器資源來說並不好。我寧願指向一個.css.php文件,或者創建指向PHP文件的個人mod_rewrite規則,僅用於您真正需要PHP的樣式表。

+0

不幸的是,這似乎並不是正確的答案,我已經做了大量的研究,並且這是PHP的正確處理程序。在我目前的配置中,處理程序在100%的時間內正常工作。問題是執行順序,處理程序的位置或我還沒有意識到的其他事情。此外,在基準測試方面,我的請求在本地執行約60毫秒,而許多Web服務器需要400毫秒以上的執行時間。我在本地嘗試了這一點,雖然我也一直在我的網站上使用該處理程序一年多。不過謝謝你的建議。 – John

+0

@John如果相同的處理程序在你的系統上工作,那麼原因必須是別的,同意。儘管如此,重要的是它的速度與內存消耗無關。 –

+0

那麼你知道任何可以顯示PHP消耗內存的工具嗎? – John