我有一个基于 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 的索引?