我有2个不同的域指向同一个根目录
www.domain1.co.uk
a.domain2.com
这样做的目的是提供来自a.domain2.com的静态内容
我不希望任何人通过a.domain2.com访问我的网站所以我只需要允许某些文件类型(js | css | jpg | png | gif | avi | wmv | mpg | wav | mp3 | txt | rtf | doc | xls | rar | zip | tar | gz | tg)并拒绝其他所有内容以阻止通过a.domain2.com加载完整网站
显然.htaccess文件位于根目录中,并且对两个域都有效。如何创建规则以实现上述描述。
我还需要指出,在重写之后(将非www重定向到www)已经存在于此.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain1\.co.uk [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.domain1.co.uk/$1 [L,R=301]
答案 0 :(得分:0)
您可以在.htaccess
:
RewriteEngine On
#prohibits other types with a.domain2.com
RewriteCond %{HTTP_HOST} ^a\.domain2\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(?:js|css|jpg|png|gif|avi|wmv|mpg|wav|mp3|txt|rtf|doc|xls|rar|zip|tar|gz|tg)$ [NC]
RewriteRule ^ - [F]
# no other rewrite for a.domain2.com
RewriteCond %{HTTP_HOST} ^a\.domain2\.com$ [NC]
RewriteRule ^ - [L]
# add www and/or change domain
RewriteCond %{HTTP_HOST} !^www\.domain1\.co.uk [NC]
RewriteRule ^(.*) http://www.domain1.co.uk/$1 [L,R=301]
答案 1 :(得分:0)
我认为你不应该为此问题使用.htaccess或mod_rewrite。而是在主配置文件(httpd.conf)中使用VirtualHost
块,并拒绝访问任何不以特定扩展名结尾的内容:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "blah"
ServerName www.domain1.co.uk
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "blah"
ServerName a.domain2.com
<FilesMatch ".+\.(?!(js|css|jpg|png|gif|avi|wmv|mpg|wav|mp3|txt|rtf|doc|xls|rar|zip|tar|gz|tg)$)[^\.]+?$">
Order allow,deny
Deny from All
</FilesMatch>
</VirtualHost>