如果用户请求顶级域名,则重写htaccess

时间:2014-01-24 23:13:45

标签: apache .htaccess mod-rewrite

目前我有以下规则:
- 如果用户是Yandexbot或bingbot,请为index.html以外的所有页面提供403错误

RewriteCond %{HTTP_USER_AGENT} YandexBot|bingbot [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(index\.html) [NC]
#  RewriteRule ^(.*)$ /index.html? [L]
RewriteRule .* - [F]

但我发现此规则阻止这些机器人访问http://example.com。当机器人请求这些URL时,我将在没有301的情况下提供“index.html”。

http://example.com
http://example.com/
http://example.com/index.html

但我希望这些机器人不要访问这些网址。我的意思是域名后面没有任何字符:

http://mywebsite.com/?aaa
ttp://mywebsite.com/abcd
http://mywebsite.com/1234some

htaccess文件怎么样?

1 个答案:

答案 0 :(得分:0)

尝试:

RewriteCond %{HTTP_USER_AGENT} YandexBot|bingbot [NC]
RewriteCond %{THE_REQUEST} !\ /+index\.html(\ |$)
RewriteCond %{THE_REQUEST} \ /+[^\ ]+
RewriteRule ^ - [L,F]

所以:

  • 在用户代理中具有“YandexBot”或“bingbot”的任何内容
  • 如果请求不适用于/index.html
  • 如果请求不仅仅是/