htaccess重写特定文件夹/子域路径

时间:2014-09-07 12:15:17

标签: .htaccess mod-rewrite

我正在尝试为网站设置重定向。

我想要从文件夹重写文件请求到子域名。

此刻,我在我的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。

1 个答案:

答案 0 :(得分: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。