如何让Apache有/robots.txt导致文件,无论域名?

Ghe*_*Ace 4 apache robots.txt apache2

我使用以下URL运行本地服务器:

foo.self
bar.self
blah-blah.self
Run Code Online (Sandbox Code Playgroud)

以上URL由以下VirtualHost语句处理:

<VirtualHost *:80>
    UseCanonicalName Off
    ServerName self
    ServerAlias *.self
    VirtualDocumentRoot C:\Users\Foo\PhpstormProjects\%-2
   <Directory C:\Users\Foo\PhpstormProjects\*>
      Options Indexes FollowSymLinks Includes ExecCGI MultiViews
      Order deny,allow
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

每个都有自己的/robots.txt,但我需要做的是让任何URL返回完全相同的东西,无论它们/robots.txt包含什么,或者即使它不存在.例如,以下URL:

  • foo.self/robots.txt的
  • bar.self/robots.txt的
  • 嗒嗒-blah.self/robots.txt的

...将返回相同的文字:

User-agent: *
Disallow: /
Run Code Online (Sandbox Code Playgroud)

这是没有诉诸301 RedirectRewriteRule.

ark*_*cha 5

只需在主机配置中为/robots.txt创建指向同一文件的别名即可.另外,可能需要Location指令来授予访问权限:

<VirtualHost *:80>
    UseCanonicalName Off
    ServerName self
    ServerAlias *.self

    Alias /robots.txt C:\Somfolder\robots.txt
    <Location "C:\Somfolder\robots.txt">
      Order deny,allow
      Allow from all
    </Location>

    VirtualDocumentRoot C:\Users\Foo\PhpstormProjects\%-2
   <Directory C:\Users\Foo\PhpstormProjects\*>
      Options Indexes FollowSymLinks Includes ExecCGI MultiViews
      Order deny,allow
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

您将此添加到所有主机配置,所有这些Alias指令指向同一文件.该文件C:\Somfolder\robots.txt是您描述的"普通"robots.txt文件.


您可以通过将该指令包含为模式来简化此操作.这样,您可以将指令放在单独的配置文件中,并仅向主机配置添加include指令:

<VirtualHost *:80>
    UseCanonicalName Off
    ServerName self
    ServerAlias *.self

    Include C:\path\to\file\robots.inc

    VirtualDocumentRoot C:\Users\Foo\PhpstormProjects\%-2
   <Directory C:\Users\Foo\PhpstormProjects\*>
      Options Indexes FollowSymLinks Includes ExecCGI MultiViews
      Order deny,allow
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

档案C:\path\to\file\robots.inc:

Alias /robots.txt C:\Somfolder\robots.txt
<Location "C:\Somfolder\robots.txt">
  Order deny,allow
  Allow from all
</Location>
Run Code Online (Sandbox Code Playgroud)

请注意,我几乎不了解MS-Windows系统.所以我记下的示例路径可能没有意义.但你应该能够得到这个想法:-)