Назад | Перейти на главную страницу

apache автоматически заполняет URL

См. Этот URL-адрес NYTimes:

http://opinionator.blogs.nytimes.com/2011/01/02/war-in-the-cabinet/?hp

Если мы введем

Opinionator.blogs.nytimes.com/2011/01/02/war-i

в браузере он автоматически перенаправляет нас к указанной выше статье, единственной статье в этой папке, начинающейся с «war-i».

Как это сделать на сайте с apache, который обслуживает только статические html-файлы? То есть, если есть модуль apache, без добавления скриптов, это было бы лучше всего.

Сайты, которые делают это, делают это с помощью своих сценариев, а не веб-сервера.

Если вам абсолютно необходимо сделать это на статическом HTML, mod_speling жестяная банка почти сделай это. Кто-то достаточно преданный или достаточно сумасшедший, вероятно, сможет заставить его работать за день или около того.

Поведение, о котором вы говорите, фактически реализуется самим сценарием, а не Apache. То есть обратите внимание на следующий сайт официального блога WordPress, который делает то же самое (это просто случайный блог, который я нашел на первой странице):

http://bestblog.wordpress.com/2007/06/13/elle-effect/

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

Этот "красивый URL" на самом деле обеспечивается mod_rewrite rules, которое заменяет URL-адрес на то, что может понять сценарий, например:

RewriteRule ^([12][0-9]{3})/([0-9]{2})/([0-9]{2})/(.*)$ /somescript.php?year=$1&month=$2&day=$3&title=$4

И так далее. Сценарий получает заголовок сообщения, понимает, что с этим именем ничего нет, и ищет заголовки в базе данных, чтобы увидеть, может ли он найти совпадение. Если это так, он перенаправляет.

Я очень надеюсь, что это проясняет то, что вы ищете!

Андрей

Вы, вероятно, сможете собрать рабочую реализацию за несколько минут, если у вас хорошо получается писать сценарии оболочки или Perl.

mod_rewrite + RewriteMap/MapType: prg + скрипт завершения имени файла