mod_rewrite 301从旧网址重定向到新的codeigniter

时间:2010-10-18 11:31:25

标签: regex .htaccess mod-rewrite redirect http-status-code-301

我已经更新了我的网站,现在使用codeigniter框架,我的新网址如下所示example.com/index.php/home/page/page-title

旧网址为example.com/index.php?option=com_content&view=article&id=249

理想情况下,我想对旧链接格式化的所有链接进行重定向,但网站上有很多页面,且标题/ ID不匹配。

我不想为每个页面编写单独的规则。例如

重定向301 /oldpage.html http://www.example.com/newpage.html

如果这更容易,我不介意将所有错误格式化的网址重定向到主页/ 404页面。

我可以看到这需要一个更复杂的规则,使用我从未擅长的正则表达式。

任何帮助表示赞赏

由于

2 个答案:

答案 0 :(得分:1)

服务器不知道哪个ID可能与给定标题匹配。您必须在CodeIgniter中处理这些情况。使用所有旧ID和新URI构建表。编写一个处理这些请求的脚本并进行重定向。

示例(我最近没有碰过CI):

的.htaccess

# parameter 'id' followed by a '=' followed by a number
RewriteCond %{QUERY_STRING} id=(\d+)
RewriteRule ^ /redirector/url/%1? [L,R=301]

重定向器可以是CI类,查看url验证为正整数,在数据库中搜索匹配的新URI并发送一个Location标题。

答案 1 :(得分:0)

尝试RewriteMap指令。有关详细信息,请参阅http://httpd.apache.org/docs/2.0/misc/rewriteguide.html