我有一个基于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的索引?
答案 0 :(得分:1)
这是因为规则
RewriteCond %{REQUEST_URI} !^/index\.php [NC]
阻止任何以index.php
开头的网址被重定向到HTTPS。
Google停止为网站编制索引的原因是因为站点地图是动态生成的,并使用当前的主机网址来创建链接。
由于/index.php/sitemap
不再被重定向到HTTPS,因此Google正在将以HTTP开头的网址编入索引,就谷歌而言,这一直是全新的,因为它一直在将HTTPS网址编入索引。