2014-09-07 120 views
0

我正在嘗試爲網站設置重定向。htaccess重寫指定文件夾/子域的路徑

我想重寫從文件夾到子域url的文件請求。

目前,我有這個在我的htaccess:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_METHOD} =GET 
RewriteCond %{HTTP_HOST} !^example.com 
RewriteCond %{HTTP_HOST} ^g.example.com 
RewriteRule ^(uploads/(.*)+ uploads/%1%{REQUEST_URI} [L] 

的想法是,當訪問者請求:

http://g.example.com/uploads/somefile.png 

他們供應:

http://example.com/uploads/somefile.png 

所以它按預期工作。但問題是:

http://b.example.com/uploads/somefile.png 

也有效。

我只想要http://g.example.com/被改寫。 http://b.example.com/應該404

+0

讓我看看我是否理解,當用戶使用'GET'訪問'g.example.com'時,它會在內部使用來自'example.com'的同一文件進行服務? 'g'與'example.com'共享'DocumentRoot'嗎? – Prix

+0

是的,這是正確的 – user3143218

回答

1

這應該工作:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^g.example.com$ [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.(JPG|GIF|PNG) [NC] 
RewriteRule^- [R=404,L] 

RewriteCond %{HTTP_HOST} ^g.example.com$ [NC] 
RewriteCond %{THE_REQUEST} !^GET [NC] 
RewriteRule^- [R=404,L] 

的第一條規則將確保以JPG,GIF,PNG結尾的網址,它不是來自g.example.com發送404未找到請求用戶。

第二條規則確保只能使用GET請求訪問g.example.com。

+0

它的工作原理,但你仍然可以通過example.com和anything.example.com訪問。我想404個其他請求 – user3143218

+0

@ user3143218所以如果用戶使用'anything.example.com'或'example.com'訪問它應該給他們一個404?僅限圖片。 – Prix

+0

感謝,現在的作品:) – user3143218

相關問題