.htaccess htaccess正在重写子域的特定文件夹/路径

.htaccess htaccess正在重写子域的特定文件夹/路径,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试为站点设置重定向 我想将文件夹中的文件请求重写为子域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_U

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

我想将文件夹中的文件请求重写为子域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
同样有效

我只想重写
<代码>应该是404。

这应该可以:

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]
第一条规则将确保任何不是来自
g.example.com
的以JPG、GIF、PNG结尾的URL向用户发送404未找到请求


第二条规则确保只使用
GET
请求访问g.example.com。

让我看看我是否理解,当用户使用
GET
访问
g.example.com
时,您希望这样做,因为从
example.com
中获得的内部文件与
example.com
相同?
g
是否与
example.com
共享相同的
DocumentRoot
?它可以工作,但您仍然可以通过example.com和anywhere.example.com访问。我想要404其他的requests@user3143218因此,如果用户使用
anything.example.com
example.com
进行访问,那么应该给他们一个404?仅适用于图像。@user3143218由于
g.example.com
位于
example.com
的同一
DocumentRoot
上,我以不同的方式更新了规则,它应该已经显示了相同的内容。所以我所做的是,第一条规则将对任何以这些扩展结尾的、不在g.example.com上的内容给出404。第二条规则将只接受g上的请求(如果它们是GET)。