2014-09-05 78 views
1

我有以下文件夾結構,我的網站:重寫規則中的子文件夾的靜態文件

​​

所有子文件夾的public_html靜態文件在我的網頁文件鏈接沒有的public_html:例如/images/logo/logo.png

我設置以下.htaccess文件,這是工作的罰款在我的本地apache和我的網絡空間,但對客戶的網絡空間,它不工作:

RewriteEngine On 
RewriteBase/

RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f 
RewriteRule ^(.*)$ /public_html/$1 [L] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond ${REQUEST_URI} ^/public_html/ 
RewriteRule .* - [L] 
RewriteRule^index.php [QSA,L] 

回答

2

這條線

RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f 

必須重寫以(2種可能性)

RewriteCond %{DOCUMENT_ROOT}/public_html%{REQUEST_URI} -f 
# or 
RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f 

另外,Y你不需要前導斜槓/之前public_htmlRewriteRule因爲你已經在RewriteBase中定義它。

然後,該線

RewriteCond ${REQUEST_URI} ^/public_html/ 

必須重寫以

RewriteCond %{REQUEST_URI} ^/public_html/ 

錯字誤差(由%替換$)。

結論

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_URI} ^/public_html/ [NC] 
RewriteRule^- [L] 

RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f 
RewriteRule ^(.*)$ public_html/$1 [L] 

RewriteRule^index.php [L,QSA] 
+0

感謝您的更正,但變化不工作。圖像,css和js仍然丟失(404(未找到)消息)。 – 2014-09-05 13:46:19

+0

您確定* mod_rewrite *已啓用,並且您的客戶網站空間允許htaccess? – 2014-09-05 13:49:14

+0

我認爲.htaccess是允許的,因爲當我評論RewriteBase /行時,我得到一個500錯誤頁面。但我不確定,如果其他apache設置阻止了正確的重寫?! – 2014-09-05 13:56:14