1

www の有無にかかわらず、ドメイン名に一致するサブフォルダー内の robots.txt および sitemap.xml ファイルを検索する rewriterule を作成したいと思います。例を見てみましょう:

  • ドメイン aaa.com、bbb.com、および ccc.com があります。
  • それらはすべて同じルート フォルダ %{DOCUMENT_ROOT} にインストールされます
  • これらは、www の有無にかかわらずアクセスできます。

誰かがhttp://aaa.com/robots.txtファイルにアクセスしようとしている場合、次のことを実行したいと思います。

リクエストされたファイルが robots.txt の場合 {

  • サブフォルダ %{DOCUMENT_ROOT}/aaa.com/robots.txt に一致するファイルがある場合 (このファイルを指定して停止) *1
  • ElseIf サブフォルダ %{DOCUMENT_ROOT}/www.aaa.com/robots.txt に一致するファイルがある場合 (このファイルを指定して停止) *2
  • それ以外の場合は、ファイル %{DOCUMENT_ROOT}/robots.txt *3 を指定します

}

ドメイン名をハードコーディングしたくありません。リクエストから取り出そうとしましたが、条件を確認できませんでした *2 および *3:

RewriteCond %{REQUEST_URI} ^/robots.txt$
RewriteRule ^robots\.txt$ /www\.%{HTTP_HOST}/robots\.txt [L]
RewriteCond %{REQUEST_URI} ^/sitemap.xml$
RewriteRule ^sitemap\.xml$ /www\.%{HTTP_HOST}/sitemap\.xml [L]

ご協力ありがとうございました !

4

1 に答える 1

0

試す:

# prevent any kind of looping:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# first check host/robots.txt
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%2/%{REQUEST_URI} -f
RewriteRule ^(robots\.txt|sitemap\.xml)$ /%2/$1 [L]

# then check www.host/robots.txt
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/www.%2/%{REQUEST_URI} -f
RewriteRule ^(robots\.txt|sitemap\.xml)$ /www.%2/$1 [L]

# finally, do nothing and allow the "/robots.txt" request to resolve itself
于 2013-11-15T00:49:32.983 に答える