表达引擎页面有时找不到www,与非www一起找到

时间:2012-06-10 15:51:38

标签: .htaccess expressionengine

我在ExpressionEngine 1.6网站上遇到了一个奇怪的问题。我添加了一个页面,有些人很难通过www访问该页面。在URL前面。没有www,似乎没有问题。它似乎也取决于我使用的浏览器 - 如果我使用Chrome,我在URL中看不到带有www的页面,但如果没有www,我可以。其他浏览器无论如何。我尝试在Chrome中清除缓存无济于事。

问题到底是什么?

这是.htaccess中的代码,如果与此有关。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

RewriteCond %{QUERY_STRING} ^utm_medium
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule (.*) /index.php?/pages/index/&%{QUERY_STRING} [L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

拥有一个可在www和无www上访问的网站并不理想,因为这意味着由于内容重复,您的Google商家信息会被稀释。通过取消www,您还可以解决您的问题:

# Remove the www from the URL
# ------------------------------
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

应该在“RewriteBase /”行之后和主要重写之前。

另一种方法是添加www:

# Add the www to the URL (use instead of www removal)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

那就是说,为了尝试并专门解决这个问题,我假设其他页面都很好,特别是这个页面?也可以通过在路径中包含index.php /来访问页面?

这次重写似乎有点奇怪:     RewriteCond%{QUERY_STRING} ^ utm_medium     RewriteCond%{REQUEST_URI} ^ / $ [NC]     RewriteRule(。*)/ index.php?/ pages / index /&amp;%{QUERY_STRING} [L]

如果此行是罪魁祸首且与导致问题的页面相关,请尝试更改最后一行:     RewriteRule ^(。*)$ /index.php?/pages/index/&%{QUERY_STRING} [L] 要么     RewriteRule(。*?)index.php?/ pages / index /&amp;%{QUERY_STRING} [L]