2014-02-17 152 views
0

用WAMP做一些本地PHP開發。將所有請求路由到index.php,,除請求位於文檔根目錄之外的父目錄中的樣式表和圖像等資產。目錄被如下佈置:用mod_rewrite向父目錄重寫請求

C:\WAMP\www\ 
    ↳ mySite 
     ↳ public 
      ↳ .htaccess 
      ↳ index.php 
     ↳ assets 
      ↳ style 
       ↳ desktop.css 

的.htaccess

RewriteEngine on 
RewriteBase /mySite/ 
RewriteCond %{REQUEST_URI} \.css$ [NC] 
RewriteRule ^(.*)$ assets/$1 [L] 
RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule ^(.+)\/?$ index.php?url=$1 [L,QSA] 

mySite.conf

Alias /mySite/ "C:/WAMP/www/mySite/public/" 

<Directory "C:/WAMP/www/mySite/public/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
     Order allow,deny 
    Allow from all 
</Directory> 

結果

localhost/mySite/ - 收益的index.php預期

localhost/mySite/style/desktop.css返回一個內部服務器錯誤

有什麼我錯過了?

謝謝

回答

0

由於Anubhava下面回答另一個問題:

只是爲了澄清任何網站不能訪問高於其DOCUMENT_ROOT文件夾級別的文件。

所以我應該把文檔根目錄爲mySite/和路由的所有請求到public/實現我被公開舉報文檔根瞄準了相同的安全。

現在,assets/位於文檔根目錄中,我可以根據需要在OP中將資源請求重寫到此目錄。

1

這可能是由於循環。

試試這個代碼來解決這個問題:

RewriteEngine on 
RewriteBase /mySite/ 

RewriteRule ^((?!assets/).+?\.css)$ assets/$1 [L,NC] 

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule ^(.+)\/?$ index.php?url=$1 [L,QSA] 
+0

感謝您的回覆@anubhava。我在OP中可能不清楚 - 我想重寫一個文件根目錄之外的文件的請求,根據您提供的另一個問題的答案,我認爲這是不可行的,只是爲了澄清任何網頁網站無法訪問其DOCUMENT_ROOT文件夾級別以上的文件。' – tkf144

+0

您的'DOCUMENT_ROOT'之上的任何內容都無法通過網絡訪問。 – anubhava