URL переписывает идентификатор с помощью строковой переменной - PullRequest
1 голос
/ 14 июня 2009

пытается выяснить, как переписать этот URL-адрес клиента

blog.com/post/how-to-get-the-ladies

, чтобы указать сторону сервера на

blog.com/post.php?id=123

я знаю, как это сделать:

blog.com/post/123

RewriteRule ^([^/]+)/?$ post.php?id=$1 [NC,L]

а как заменить строку идентификатора заголовком сообщения?

Ответы [ 3 ]

2 голосов
/ 14 июня 2009

Сам веб-сервер не делает этого различия и не может преобразовать ваш «уникальный текстовый идентификатор» в идентификатор базы данных. Поэтому одно правило .htaccess, оцененное веб-сервером, вам не поможет. Но как это делается на всех этих веб-приложениях? Обычно этот перевод выполняется самим Joomla / Wordpress и работает только до тех пор, пока текст how_to_get_the_ladies известен и уникален во всей системе / базе данных.

2 голосов
/ 14 июня 2009

Вы можете добавить правило, которое идет в индексный файл, например:

RewriteRule ^(.*)$ index.php?url=$1

и в этом файле по заголовку вы можете показать пост, который запрашивает

1 голос
/ 14 июня 2009

Недавно я решил похожую проблему. Я бы посоветовал изучить директиву RewriteMap и использовать «Внешнюю программу перезаписи».

У RewriteRule есть некоторые большие ограничения в плане удобства обслуживания и надежности. Если вы еще не достигли этого, вы можете в конце концов. Только простые правила переписывания могут быть написаны безопасно.

С помощью rewriteMap вы можете создать скрипт php или perl, воспользоваться преимуществами существующей кодовой базы и выполнить все правила перезаписи из локализованного места в вашем коде, которое легко находится в управлении версиями.

Я считаю, что вам нужен доступ к файлу конфигурации httpd.conf (или vhost), хотя RewriteMaps (или некоторую связанную директиву) нельзя поместить в файлы .htaccess.

...