使用 htaccess 的域特定机器人文件将 robots.txt 重写为 example.com.txt 或回退到 default.txt

Nat*_*per 4 apache .htaccess mod-rewrite

我想拥有特定于域的 robots.txt,到目前为止这有效:

RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]
Run Code Online (Sandbox Code Playgroud)

但我想有一个后备,所以如果 domain.txt 文件不存在然后去 default.txt

这并没有真正解决,因为它会重定向所有不存在的文件名,而且我已经在不同的规则中有一个 !-f: RewriteCond %{REQUEST_FILENAME} !-f RewriteRule robots/default.txt [L]

所以我需要: 1-catch robots.txt requests 2-Send to robots/domain.txt 如果它存在 3-Else 发送到 robots/default.txt

Jon*_*Lin 5

尝试:

RewriteCond %{DOCUMENT_ROOT}/robots/%{HTTP_HOST}.txt -f
RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]

RewriteRule ^robots\.txt$ robots/domain.txt [L]
Run Code Online (Sandbox Code Playgroud)

第一条规则中的条件检查目标机器人文件是否存在,如果存在,robots.txt则被重写。因此,只有在第一条规则不适用时才会应用第二条规则。