.htaccess不让robot.txt通过

时间:2012-03-03 12:11:43

标签: .htaccess robots.txt

我的root中有以下.htaccess文件:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
RewriteRule ^([^/]*)$ index.php?page=$1 [NC]

这样可以缩短我的所有网址到website.com/something

问题是Google无法在我的根目录中找到我的robots.txt文件。上面的文件没有让它通过。当它输入website.com/robots.txt时,我找不到404。但是如果我注释掉上面的.htaccess代码,我就可以了。

如何编辑我的.htaccess文件,让robots.txt通过,而不会干扰我的其他网址?

4 个答案:

答案 0 :(得分:8)

RewriteEngine on
RewriteRule ^robots.txt - [L]

第二行将从网址重写规则中排除robots.txt。 试试上面的代码

答案 1 :(得分:1)

您可以在.htaccess文件中使用此解决方案:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php?page=$1 [L]

除了RewriteCond列表中指定的文件外,这会将您对index.php?page =的所有请求重写。

答案 2 :(得分:1)

我尝试了两种建议,但它们都很有效。然而,我选择Kiran的答案仅仅是因为它的语法较短。这就是我最终的目标。

Options +FollowSymlinks 
RewriteEngine on

RewriteBase /

# remove trailing slash
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]

# Allow Robots.txt to pass through
RewriteRule ^robots.txt - [L]

RewriteRule ^([^/]*)$ index.php?page=$1 [NC]

答案 3 :(得分:0)

找到.htaccess中已经存在的行:

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]

并改为:

RewriteRule ^itemap.xml$ index.php?route=feed/google_sitemap [L]