我已经将一些页面转换为SEO友好的URL。
旧格式:
mydomain.com/myscript.php?f=1&t=2
新格式:
mydomain.com/f1-t2-some-stuff-tagged-on.html
因为我在URL上标记了一些东西,所以这个重定向是在php中完成的,其中标记的东西需要一些逻辑和处理。最终结果,我得到了一个我很满意的网址。
为了处理新格式,我创建了一个重写规则,确保新格式由myscript处理。它看起来像这样:
RewriteRule ^f([0-9]+)-t([0-9]+)(.*)$ myscript.php?f=$1&t=$2&friendly=1 [NC,L]
这很有效。它不会更改浏览器中的URL,但会执行myscript.php并呈现页面。注意,我添加了一个变量'friendly'来告诉php脚本不要重定向到友好版本,只是渲染页面。
这一切都很棒。我确信有更优雅的解决方案,但我对此很满意,最重要的是IT工作。
所以我的问题是:我想指定新格式是永久性的(即301重定向)。我应该在哪里指定?在PHP重定向从旧格式到新格式?或者.htaccess重写不会改变URL?我在考虑前者,但我想我会和你们一起检查。
答案 0 :(得分:2)
PHP重定向(从旧格式到新格式)是永久格式。您不希望任何人使用旧URL,然后您需要添加此标头:
header('Status: 301 Moved Permanently', false, 301);
.htaccess
重定向(从新格式到真实URL)是透明的。这是您要编入索引的URL,因此您不能指定[R=301]
。如果这样做,重定向将停止透明,并且您的URL会更改。