动态重写htaccess文件

时间:2011-09-02 09:51:24

标签: php apache .htaccess mod-rewrite redirect

我正在处理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-designinternet-shopper-numbers-continue-to-grow800715788都是动态生成的。

所以我的问题是如果只有一个动态生成的变量可用,我如何从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

我不知道如何真正测试这些,但这会有效吗?

1 个答案:

答案 0 :(得分:1)

是的,在php中完成所有重定向工作绝对是个好主意。只需要一个简单的“全能”.htaccess

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  .* index.php

然后在php中根据需要转换网址,并在必要时发送位置标头。为“旧”网址添加301状态代码可能是个好主意。