Использование одного каталога с разными псевдонимами с использованием .htaccess - PullRequest
1 голос
/ 10 января 2011

Я перерабатываю сайт (заменив его сайтом, основанным на CodeIgniter), который в настоящее время представляет собой ужасную путаницу повторяющихся процедурных кодов, однако имеет хороший рейтинг в поисковых системах.Из-за этого мне нужно сохранить точно такую ​​же структуру URL.

У компании есть много разных страниц с цитатами, которые практически одинаковы - поэтому я создал одну чистую версию, которую можно использовать везде.

Система котировок теперь находится в папке / get-quote, но из-за необходимости использования старых URL-адресов эта папка нигде не должна быть видна.

Я бы хотел, чтобы произошло следующее, но не знаю, как это сделать:

Пользователь, обращающийся к /insurancequote.php, должен (на сервере) загрузить каталог / get-quote /(который, в свою очередь, будет загружать маршрут CI по умолчанию).Базовый URL в CI должен быть http://www.mysite.com/insurancequote.php (я могу сделать этот бит), поэтому переход к шагу 2 приведет к: http://www.mysite.com/insurancequote.php/step2 (который будет сопоставлен с / get-quote / step2).

Во-вторых, пользователь, обращающийся к /brokerquote.php, должен показать mysite.com/broker в адресной строке (перенаправление?), Но на сервере получить доступ / получить-цитату / брокер.

В-третьих, пользователь получает доступ к одной из множества страниц, относящихся к брокеру, например, mysite.com/brokername1.php или mysite.com/broker/brokername2.php (да, они разбросаны повсюду!Я знаю, где каждый из них) должен показать mysite.com/broker/brokername1 или mysite.com/broker/brokername2.На сервере должны быть доступны / get-quote / broker / brokername1 или / get-quote / broker / brokername2.

Я не думаю, что то, что я написал, совершенно ясно, поэтому, возможно, sudocode поможет:

If '/insurancequote.php'
    Dont Redirect
    Use '/get-quote/'

If '/brokerquote.php'
    Redirect '/broker/'
    Use '/get-quote/broker/'

// Do the following (manually) for each broker
If '/brokername1.php'
    Redirect '/broker/brokername1/'
    Use '/get-quote/broker/brokername1/'

If '/brokers/bname2.php'
    Redirect '/broker/brokername2/'
    Use '/get-quote/broker/brokername2/'

If '/mybrokerpage.php'
    Redirect '/broker/mybroker/'
    Use '/get-quote/broker/mybroker/'

Возможно ли это?Если так, как бы я это сделал?

Спасибо!

1 Ответ

3 голосов
/ 10 января 2011

Вы рискуете испортить ваш новый чистый код по историческим причинам (и парень, следующий за вами, вы скажете: WTF, это беспорядок!).

Для меня правильным решением будет обработкамиграция URL в apache, а не в вашем приложении.Каждый ссылочный URL, который вы не хотите хранить, должен получить сообщение 410 - Gone (например, подумайте о ссылочных изображениях), а каждая ссылка на страницу, имеющую новую соответствующую страницу, должна быть перемещена 301перманентное перенаправление на нужную страницу.Затем по прошествии некоторого времени проверьте журнал доступа вашего сервера и, если никто больше не проверяет старый URL, удалите правила.

Если вы знаете каждый старый URL и каждый соответствующий URL, тогда используйте соответствующий файл URL (или хэш-файл , быстрее) и управляйте перенаправлением 301 с помощью rewriteMap .В хеш-файле может быть действительно большое количество файлов, совпадение должно быть быстрым.И это должна быть временная функция, ожидающая, пока роботы исправят URL.

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