RewriteRule防止谷歌索引网站

时间:2013-11-04 16:58:29

标签: .htaccess expressionengine google-webmaster-tools feedburner

我有一个基于ExpressionEngine(EE)构建的网站。默认情况下,EE要求index.php出现在URL的第一个段中。为了提高我的网址,我使用.htaccess RewriteRule:

# Remove index.php from ExpressionEngine URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

整个网站也提供SSL,我用另一个RewriteRule完成:

# Force SSL
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

最近,客户要求将他们的RSS源移动到Feedburner。但是,Feedburner不喜欢https网址,因此我不得不修改我的SSL RewriteRule,以便不在Feed网页上强制使用SSL:

# Force SSL except on RSS feeds
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/feeds/ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

所以我的整个.htaccess文件看起来像这样:

RewriteEngine On
RewriteBase /

# Force SSL except on RSS feeds
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/feeds/ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

# Remove index.php from ExpressionEngine URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

但是,只要我将Feed规则添加到.htaccess文件中,Google就会停止为网站的网页编制索引。提交给Google的站点地图网址为/index.php/sitemap,因此我认为index.php正在此处发挥作用。

如何调整我的.htaccess文件以在我的Feed页面上允许SSL,但不会搞砸Google的索引?

1 个答案:

答案 0 :(得分:1)

这是因为规则

RewriteCond %{REQUEST_URI} !^/index\.php [NC]

阻止任何以index.php开头的网址被重定向到HTTPS。

Google停止为网站编制索引的原因是因为站点地图是动态生成的,并使用当前的主机网址来创建链接。

由于/index.php/sitemap不再被重定向到HTTPS,因此Google正在将以HTTP开头的网址编入索引,就谷歌而言,这一直是全新的,因为它一直在将HTTPS网址编入索引。