Mod_rewrite уточняющий вопрос. Только для динамических URL? - PullRequest
1 голос
/ 04 октября 2009

Меня попросили разработать mod_rewrite для изменения

http://www.example.com/health-and-fitness-tips/999/

в

http://www.example.com/health-and-fitness-tips/how-do-I-lose-10kg-in-12-weeks/

, где 999 - это id, а How do I lose 10kg in 12 weeks - это title.

Возможно ли это даже удаленно или mod_rewrite только для изменения чего-то вроде

http://localhost/siteengine/products.php?id=123

в

http://localhost/products/123

???

Ответы [ 4 ]

3 голосов
/ 04 октября 2009

Это практически не выполнимо AFAIK (динамически, без дополнительных модулей). Первый шаг, который вам нужно сделать, - конвертировать все ссылки в SEO. , затем , вам нужно передать заголовки в качестве параметра на страницу.

Пример:

<a href=/health-and-fitness-tips/how-do-I-lose/>

Condition: ^/health-and-fitness-tips/(.*)$/
Rewrite to: ^/page.php?title=$1

Часть этого - псевдокод, но анализируйте $ _GET ['title'] в page.php и запрашивайте базу данных на основе постоянной ссылки.

Вам также потребуется настроить 301 для каждого постоянного URL-адреса, чтобы поисковые системы не терялись после этого.

2 голосов
/ 06 октября 2009

Я предполагаю, что ответ, который дал мэдер, - это тот, который вы ищете, но технически вы можете создать файл статической карты, чтобы перенаправить набор строк заголовка на идентификаторы, и он не должен выполнять внешний prg исполняемый:

RewriteMap static-title-to-id txt:/tmp/title_to_id.txt
RewriteRule ^/health-and-fitness-tips/(.*)/ /health-and-fitness-tips/${static-title-to-id:$1}/ [L]

с содержимым файла /tmp/title_to_id.txt примерно так:

how-do-I-lose-10kg-in-12-weeks  999
some-other-title                988
and-another                     983
1 голос
/ 04 октября 2009

Вы могли бы сделать это, но это было бы грязно и отстало. Вам все еще нужен сценарий для выполнения переписывания.

Ознакомьтесь с документацией по директиве RewriteMap , в частности, с битом типа карты prg - с использованием внешней программы для предоставления служб сопоставления URL-адресов.

Теперь, заметьте, я думаю, что это плохая, плохая идея, но она позволит вам сделать это.

0 голосов
/ 04 октября 2009

Mod_rewrite просто применяет регулярное выражение к URL, поэтому получение идентификатора из заголовка или vai против невозможно (насколько я знаю).

...