我的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
通过,而不会干扰我的其他网址?
答案 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]