【问题标题】:301 Redirect Conflict with www redirect301重定向与www重定向冲突
【发布时间】:2015-06-13 22:08:09
【问题描述】:

我的 301 重定向有问题。

我刚刚将我的网站从基于 html 的网站升级为 joomla 网站。所以我试图将 50 个左右的页面重定向到新的基于 joomla 的导航。

所以什么是有效的: 重写规则以删除 index.php,以及 www. 和 301 重定向

什么不工作: 301 重定向,前面带有 www。

www.sample.com/page.html

它将它们发送到主页而不是页面,它将它们带到主页。

这是我的 www 重写规则。

## Redirects to www.
RewriteEngine On
RewriteCond %{HTTP_HOST} www.sample.com
RewriteRule (.*) http://sample.com/$1 [R=301,L]

这是我的 301 规则

Redirect 301 /page.html /page

感谢您的帮助。

【问题讨论】:

  • 那么对于哪个 URL 不起作用?
  • 您可以编辑以增加您希望页面重定向方式的清晰度......因为这基本上似乎是说对 www.example.com/foo 的任何内容进行无限重定向和 www.example.com/foo (即半冗余)。顺便说一句...在这里清理配置时,您应该使用“示例”而不是“示例”。

标签: .htaccess mod-rewrite redirect joomla http-status-code-301


【解决方案1】:

如果您尝试删除www,那么您可能需要更改一些匹配项。试试这样的规则。

## Redirects to www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.sample\.com$ [NC]
RewriteRule (.*) http://sample.com/$1 [R=301,L]

RewriteRule ^page.html$ /page [R=301,L]
RewriteRule ^page2.html$ /page2 [R=301,L]

【讨论】:

  • 是的,这部分有效。问题是当我有 www 和 301 时。
  • 我倾向于不混合我的指令,因为有时会发生奇怪的事情。您已经在使用重写引擎,那么为什么不直接制定重写规则而不是弱重定向呢?例如,请参阅我的编辑。
  • 301 用于谷歌。我也是这么想的。 r=301 和 301 重定向一样吗?
  • 301 是一个状态码,表示永久移动,而不仅仅是谷歌。是的,R 标志代表状态代码为 301 的重定向。所以它们是相同的。只是另一种方法。