我应该使用R=301重定向,不改变URL吗?


Should I use R=301 on redirect that doesn't change URL?

我已经将一些页面转换为seo友好的url。

旧格式:

mydomain.com/myscript.php?f=1&t=2
新格式:

mydomain.com/f1-t2-some-stuff-tagged-on.html

因为我在URL上标记了一些东西,所以这个重定向是在php中完成的,其中标记的东西需要一些逻辑和处理。最终,我得到了一个我满意的URL。

为了处理新格式,我创建了一个重写规则,以确保myscript处理新格式。它看起来像这样:

RewriteRule ^f([0-9]+)-t([0-9]+)(.*)$ myscript.php?f=$1&t=$2&friendly=1 [NC,L]

这个效果很好。它不改变浏览器中的URL,但执行myscript.php并呈现页面。注意,我添加了一个变量'friendly'来告诉php脚本不要重定向到友好版本,而只是渲染页面。

这一切都很好。我相信还有更优雅的解决方案,但我对此很满意,最重要的是它有效。

所以我的问题是:我想指定新的格式是永久的(即301重定向)。我应该在哪里指定这个?在php重定向从旧格式到新格式?或者在。htaccess重写不改变URL?我认为是前者,但我想我应该和你们确认一下。

PHP重定向(从旧格式到新格式)是永久性的。如果你不希望别人使用旧的URL,那么你需要添加这个标题:

header('Status: 301 Moved Permanently', false, 301); 

.htaccess重定向(从新格式重定向到真实URL)是透明的。这是您想要索引的URL,因此您不能指定[R=301]。如果您这样做,重定向停止是透明的,并且您的URL更改。