Создать URL перенаправления - PullRequest
2 голосов
/ 26 января 2011

Вот реальный случай, в NewsNow.co.uk есть много ссылок на новости с тысячами обновлений на сайте. И пример для одного из новостных URL:

http://newsnow.co.uk/A/471722742?-19721

все URL-адреса новостей форматируются таким образом, но когда мы щелкаем по ним, мы получаем реальный URL, например:

http://www.abcactionnewsx.com/dpp/news/state/bla-bla

Кто-нибудь знает, как этого добиться эффективно?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Сохранение таблицы «внутренних» путей (URL-адресов «newsnow») и URL-адресов «назначения» в какой-либо базе данных;sqlite3 будет хорошим выбором для небольших приложений.

Вы можете хешировать «внутренние» пути, если время поиска для определенных строк слишком мало в выбранной вами базе данных.

Когда приходит запроснайдите его в базе данных и отправьте ответ 302 с целевым URL-адресом в качестве нового местоположения для ресурса.

0 голосов
/ 26 января 2011

Это делается с помощью механизма перезаписи, встроенного в общие веб-серверы, такие как Apache или Nginx.Эти движки позволяют вам писать правила, которые преобразуют URL-адрес, подобный первому, во что-то, что будет лучше понятно вашим php-страницам.Например, вы можете создать правила, которые превратят вашу первую ссылку выше в:

http://newsnow.co.uk/index.php?catagory=A&id=471722742&referrer=-19721

Это прозрачно для пользователя, и они будут когда-либо видеть только ту ссылку, в которую впервые набрали. Вы можете использовать переменныебыть переданным, чтобы выполнить любые действия, которые вы желаете.В этом случае вы можете захотеть использовать переменные для выполнения какого-либо поиска в базе данных, чтобы получить фактическое назначение, которое вас интересует. Тогда это просто вопрос выполнения php-редиректа на указанную ссылку.

Посмотрите следующую ссылку, чтобы очень быстро познакомиться с возможностями переписывания Apache (называемыми mod_rewrite): http://www.besthostratings.com/articles/mod-rewrite-intro.html

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