我正在将网站从“普通的旧”php迁移到CakePHP框架,我需要能够处理一些遗留URL,例如:
foo.com/bar.php?id=21
是当前网址的模式,但在使用cake的新网站中,该网址需要重定向到:
foo.com/blah/21
基本上,我需要能够获取该ID号并将其传递。
可能我正在进行大约4个小时的睡眠,但无论我得到什么样的正则表达式模式,我似乎无法在/app/webroot/.htaccess
中使用它。
我对任何使用.htaccess或routes.php的解决方案持开放态度 - 无论哪种方式,我都会感激您的想法!
答案 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的数十万个教程和解决方案中的一些内容会回来的。