重写规则deppend表单请求域

时间:2018-01-15 13:00:56

标签: .htaccess mod-rewrite

我有一个存储库用于2个实例代码:domain.comapi.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]

1 个答案:

答案 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.txtapi中设置单独的指令,请将此规则放在RewriteEngine On行下方

RewriteCond %{HTTP_HOST} =api.doamin.com
RewriteRule ^robots\.txt$ /robots-api.txt [L,NC]

这将为/robots.txt域重写robots-api.txtapi的请求。

现在使用以下内容创建一个名为robots-api.txt的新文件:

Disallow: /