我已經在Google和StackOverflow上找到了解決此問題的答案,但事實是我對.htaccess瞭解不多,並不能幫助我確定正確的答案因爲我的情況是,所以我在這裏問。.htaccess RewriteCond其中URI不包含域
我的情況是,我有幾個站點使用相同的物理目錄作爲它們在服務器上的根目錄。
這一切都工作正常,但我想確保每個網站不能訪問其他圖像等從瀏覽器,除非他們在正確的域名。
目前,我有一個文件的結構是這樣的:
/resources/{resource}/{full_domain_name}
因此,例如www.domain.co.uk
就會有這樣的結構:
http://www.domain.co.uk/resources/images/www.domain.co.uk/some_image.jpg
但如果www.domain_2.co.uk
存在使用相同的物理目錄網站然後他們可以從他們自己的域中查看其他域的資源,如下所示:
http://www.domain_2.co.uk/resources/images/www.domain.co.uk/some_image.jpg
這不是一個真正的主要問題,因爲這些目錄中絕對沒有敏感信息,但這更令人煩惱,我寧願用戶也無法做到這一點(不是任何人到目前爲止)。
我試圖把.htaccess文件到/資源目錄,但我堅持用正則表達式等
我基本上要確保URI包含當前域名,否則重定向到一個403錯誤頁面。
這是我想出了:
RewriteCond %{REQUEST_URI} !^(/resources/[^/]*/%{HTTP_HOST})(.*)$
RewriteRule ^(.*)$ /error/403.php
我放在[^/]
位是因爲有幾個文件夾,例如其原因是:
/resources/images/{full_domain_name}
/resources/scripts/{full_domain_name}
/resources/stylesheets/{full_domain_name}
有誰能幫我做這些條件?
任何幫助,將不勝感激。
你目前的規則是什麼結果?它看起來像它會工作,除了你不需要任何'()'在'/ resources/[^ /] * /%{HTTP_HOST}周圍。'' –
@Michael目前如果我在www.domain.co .uk並轉到www.domain.co.uk/resources/stylesheets/www.domain.co.uk/style.css,例如它總是將我重定向到/error/403.php文件。當我刪除.htaccess規則時,它會找到該文件,因爲它應該正常進行。 –
您實際上並不需要在正則表達式中表示的整個'%{REQUEST_URI}'。您可以匹配http_host'RewriteCond%{REQUEST_URI}!^。+%{HTTP_HOST}' –