CakePHP中的遗留URL使用路由或htaccess

时间:2010-07-19 05:16:51

标签: regex url .htaccess cakephp routes

我正在将网站从“普通的旧”php迁移到CakePHP框架,我需要能够处理一些遗留URL,例如:

foo.com/bar.php?id=21

是当前网址的模式,但在使用cake的新网站中,该网址需要重定向到:

foo.com/blah/21

基本上,我需要能够获取该ID号并将其传递。

可能我正在进行大约4个小时的睡眠,但无论我得到什么样的正则表达式模式,我似乎无法在/app/webroot/.htaccess中使用它。

我对任何使用.htaccess或routes.php的解决方案持开放态度 - 无论哪种方式,我都会感激您的想法!

2 个答案:

答案 0 :(得分:1)

所以经过一些调整后,最后的重写就像这样:

RewriteEngine On
# My hack to get Legacy URLs to work
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^bar\.php$ http://foo.com/bar/%1? [R=301,L]
# Cake's Default Rewrite
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

请注意?之后的结尾%1 - 没有它,重写为foo.com/bar/21?id=21,有了它,foo.com/bar/21

答案 1 :(得分:0)

我想你可能会在这里找到一个解决方案:http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/,使用类似的东西:

RedirectMatch ^/oldfolder/(.*)$ http://mydomain.site/newfolder/$1

很难让你的头脑发达htaccess - 我脑子里没有足够的空间 - 但是值得坚持使用apache手册并查看Google的数十万个教程和解决方案中的一些内容会回来的。