我有一个存储库用于2个实例代码:domain.com
和api.domain.com
。
规则应该是什么样的:
为robots.txt
域
api.doamin.com
文件
对于域api.domain.com
,阻止除api.domain.com/api/
之外的流量(/api/
允许,/resources/
,...禁止或重定向到主域名)
编辑1 :(建议更改后的.htaccess)
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
Redirect "/f/" "/assets/"
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
RewriteCond %{HTTP_HOST} =api.domain.com
RewriteRule !^api/ [F,NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule \.(gif|jpe?g|png|bmp)$ index.php/image404/index/?r=%{REQUEST_URI} [NC,L]
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
答案 0 :(得分:1)
robots.txt
并未真正阻止所有网络请求,它只是指示抓取工具不要抓取某些路径。
最好对此阻止使用mod_rewrite
规则,如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} =api.doamin.com
RewriteCond %{THE_REQUEST} !\s/+api/ [NC]
RewriteRule ^ - [F]
此规则将阻止api.doamin.com
域中未转到/api/
路径的所有流量。
请注意这也会为http://api.domain.com/
提供403。
如果您需要独立于重写的其他设置,请使用:
SetEnvIf HOST ^api.domain.com$ API_SITE
AddType application/x-httpd-php70 .php ENV=API_SITE
要在robots.txt
域api
中设置单独的指令,请将此规则放在RewriteEngine On
行下方
RewriteCond %{HTTP_HOST} =api.doamin.com
RewriteRule ^robots\.txt$ /robots-api.txt [L,NC]
这将为/robots.txt
域重写robots-api.txt
到api
的请求。
现在使用以下内容创建一个名为robots-api.txt
的新文件:
Disallow: /