我正在处理htaccess文件中的一些重写和重定向。我这样做的原因是因为我正在为现有网站开发新的设计和布局,因此我需要重定向以保持谷歌排名等。
所以旧的(现有的)URL看起来像这样:
/news/internet-shopper-numbers-continue-to-grow-$21378232.htm
,新网址如下所示:
/industry-news/small-business-website-design/internet-shopper-numbers-continue-to-grow/800715788
在旧网址中internet-shopper-numbers-continue-to-grow
是动态生成的,其中新网址small-business-website-design
,internet-shopper-numbers-continue-to-grow
和800715788
都是动态生成的。
所以我的问题是如果只有一个动态生成的变量可用,我如何从1个URL到另一个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
我不知道如何真正测试这些,但这会有效吗?
答案 0 :(得分:1)
是的,在php中完成所有重定向工作绝对是个好主意。只需要一个简单的“全能”.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
然后在php中根据需要转换网址,并在必要时发送位置标头。为“旧”网址添加301状态代码可能是个好主意。