См. Этот 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
+ скрипт завершения имени файла