2010-07-19 3 views
0

Я посреди перемещение сайта из «старого доброго» PHP в рамки CakePHP и мне нужно, чтобы быть в состоянии обрабатывать некоторые устаревшие адреса, например:Устаревших URL-адрес в CakePHP с использованием маршрутов или HTAccess

foo.com/bar.php?id=21 

является структурой текущих URL-адресов, но в новом месте с помощью торта, что URL должен перенаправлять:

foo.com/blah/21 

Так в основном, мне нужно, чтобы быть в состоянии захватить этот идентификационный номер и передать его ,

Возможно, я работаю около 4 часов сна, но я не могу заставить его работать в /app/webroot/.htaccess независимо от того, какой шаблон регулярного выражения я получаю.

Я открыт для любого решения, которое использует .htaccess или routes.php - в любом случае я был бы благодарен за идеи!

+0

Могли вы публикуете результаты .htaccess? –

ответ

0

Я думаю, что вы, вероятно, найти решение здесь: http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/, используя что-то вроде:

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

Это может быть трудно получить вашу голову круглый HTAccess - у меня нет много места осталось в моей голове - но стоит посоветоваться с руководством Apache и посмотреть на некоторые из сотен тысяч руководств и решений, которые Google вернет.

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

Смежные вопросы