2

我有一个基于 ExpressionEngine (EE) 的网站。默认情况下,EE 需要index.php出现在 URL 的第一段中。为了美化我的 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 URL,因此我不得不修改我的 SSL RewriteRule 以不在提要页面上强制 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]

然而,一旦我将提要规则添加到 .htaccess 文件中,Google 就停止索引该站点的页面。提交给 Google 的站点地图 URL 是/index.php/sitemap,所以我认为它index.php在这里发挥了作用。

如何调整我的 .htaccess 文件以在我的提要页面上允许 SSL,但又不会弄乱 Google 的索引?

4

1 回答 1

0

发生这种情况是因为规则

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

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

谷歌停止索引站点的原因是站点地图是动态生成的,并使用当前主机 URL 来创建链接。

由于/index.php/sitemap不再被重定向到 HTTPS,Google 正在索引以 HTTP 开头的 URL,这对 Google 而言是全新的,因为它一直在索引 HTTPS URL。

于 2013-11-05T17:41:18.257 回答