我正在做一些重写和重定向在我的htaccess文件。我这样做的原因是因为我正在为现有网站开发新的设计和布局,因此我需要重定向以保持对谷歌排名等的控制。
所以旧的(现有的)URL看起来像这样:
/news/internet-shopper-numbers-continue-to-grow-$21378232.htm
和新的URL看起来像这样:
/industry-news/small-business-website-design/internet-shopper-numbers-continue-to-grow/800715788
旧URL中internet-shopper-numbers-continue-to-grow
是动态生成的,新URL中small-business-website-design
、internet-shopper-numbers-continue-to-grow
、800715788
都是动态生成的。
所以我的问题是我如何从一个URL到另一个,如果只有一个动态生成的变量是可用的。
我在想也许这将是一个好主意,做一个PHP重定向,我可以从URL过程中通过数据库获取数据,以获得生成新URL所需的所有数据,但我不确定这是否是好的做法,这也意味着必须匹配旧的URL文件目录,而不是当前的情况。
我猜我是这样开始的:
Options +FollowSymlinks
RewriteEngine On
RewriteCond /news/%{QUERY_STRING}(.)(''d+)(.)(htm)$
RewriteRule ^industry-news/(.+)/%1/('d{9})
我知道这是非常基本的,有点错误,但我第一次做这个,我被难住了。
——附加问题——
我能做这样的事情吗?
RewriteCond /new/%{QUERY_STRING}(.)(''d+).htm$
RewriteRule ^industry-new/article/article.php?direct=%1
我不知道如何去测试这些真的,但这会工作吗?
是的,在php中做所有重定向的事情绝对是一个好主意。只要有一个简单的"catch-all" .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
然后在PHP中转换url,并在必要时发送位置标头。为"旧"url添加301状态码可能是个好主意。