0

我在 ExpressionEngine 1.6 网站上遇到了一个奇怪的问题。我添加了一个页面,有些人在使用 www 访问该页面时遇到了困难。在网址前面。没有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>
4

1 回答 1

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/&%{QUERY_STRING} [L]

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

于 2012-06-11T13:45:51.647 回答