apache mod_rewrite: использование базы данных для обновления правил перезаписи - PullRequest
4 голосов
/ 29 ноября 2010

Всего новичков на mod_rewrite.

Допустим, я хочу создать красивые URL для каждого производителя на моем сайте, поэтому у меня есть www.mysite.com/samsung www.mysite.com/sony www.mysite.com / acme

работает достаточно хорошо.

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

Кроме того, почему эта проблема не является основной темой, рассматриваемой в руководствах для mod_rewrite?Чем может быть полезен mod_rewrite, если вам нужно поддерживать его вручную (если вы время от времени размещаете новый контент на своем сайте)?

Также упоминается о необходимости иметь доступ к httpd.conf. Как мне получить доступ?httpd.conf на сервере моего хостинг-провайдера?Как это делает любой другой сайт?

Спасибо

Ответы [ 2 ]

4 голосов
/ 10 декабря 2012

Только что натолкнулся на этот ответ при поиске аналогичного решения - при поиске чуть дальше я обнаружил, что mod_rewrite теперь имеет директиву RewriteMap , которая будет делать именно то, что вы хотите, без необходимости запуска PHP или другогоязык сценариев.

Позволяет определить правило отображения с помощью текстового файла, файла DBM, внешнего сценария или запроса SQL.

Надеюсь, это поможет!

3 голосов
/ 29 ноября 2010

Обычно это делается так, что вы берете все URL-адреса, соответствующие определенному шаблону, и направляете их в файл PHP (или любой другой язык программирования на стороне сервера) для более сложной маршрутизации. Примерно так:

RewriteRule ^(.*)$ myroute.php?url=$1 [QSA,L]

Затем в вашем файле myroute.php вы можете включить логику для просмотра параметра строки запроса «url», поскольку он будет содержать исходный URL-адрес . производитель в базе данных, или что-то еще требуется.

Этот пример, очевидно, берет все URL и отображает их в myroute.php. Другим примером может быть что-то вроде:

RewriteRule ^/manufacturers/(.*)$ manuf.php?name=$1 [QSA,L]

В этом случае он будет сопоставлять URL-адреса следующим образом:

/ производителей / sony => /manuf.php?name=sony
/ производители / samsung => /manuf.php?name=samsung
и т.д ...

В этом случае ваш файл manuf.php может искать базу данных на основе параметра строки запроса name.

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