Устаревшие URL в CakePHP с использованием маршрутов или htaccess - PullRequest
0 голосов
/ 19 июля 2010

Я нахожусь в процессе перемещения сайта из "старого" php в платформу CakePHP, и мне нужно иметь возможность обрабатывать некоторые устаревшие URL, например:

foo.com/bar.php?id=21

- это шаблониз текущих URL-адресов, но на новом сайте, использующем торт, этот URL-адрес необходимо перенаправить на:

foo.com/blah/21

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

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

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

Ответы [ 2 ]

1 голос
/ 19 июля 2010

Итак, с небольшой настройкой, окончательное переписывание получилось так:

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

0 голосов
/ 19 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...