动态重写htaccess文件


Dynamic rewrites in htaccess file

我正在做一些重写和重定向在我的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-designinternet-shopper-numbers-continue-to-grow800715788都是动态生成的。

所以我的问题是我如何从一个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状态码可能是个好主意。