Управлять написанием URL в .htaccess или в коде PHP? - PullRequest
2 голосов
/ 21 марта 2009

Я изучаю, как сделать переписывание URL в рамках LAMP. Я начал свое исследование с изучения кода WordPress. Я посмотрел на .htaccess WordPress и увидел это:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Я был удивлен И восхищен! Я был удивлен, потому что я не видел ни одного из тех правил, похожих на регулярные выражения. Я был в восторге, потому что я могу отложить изучение работы файлов .htaccess (торопиться за крайний срок), использовать приведенный выше скрипт и проанализировать переменную $ _SERVER в PHP для данных url.

Итак, мой вопрос: каковы преимущества / недостатки управления перезаписью URL в файле .htaccess? И каковы преимущества / недостатки управления перезаписью URL в коде PHP?

Ответы [ 2 ]

4 голосов
/ 21 марта 2009

ModRewrite: используйте, когда есть несколько разных вариантов. Если у вас много регулярных выражений, сервер будет чувствовать нагрузку (мой опыт был с 30 сложными регулярными выражениями). Кроме того, это привязывает вас к Apache (или другому поставщику, который поддерживает это). Преимущество: это очень просто реализовать. Недостаток: блокировка поставщика, меньшая гибкость.

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

3 голосов
/ 21 марта 2009

В PHP это приведет к загрузке, разбору и выполнению большего количества PHP-скриптов / кода. Если вы идете этим путем, не переходите на нужную страницу с внешними перенаправлениями. Помните, что PHP-скрипты по сути компилируются каждый раз, когда их ударили (несмотря на кэширование кода операции).

mod_rewrite будет намного эффективнее в этом. Это также заставит вас придерживаться таких простых правил, поскольку mod_rewrite может использовать только регулярные выражения (и некоторые другие вещи), тогда как в PHP вы потенциально можете делать что угодно (например, выполнять поиск в базе данных для поиска нужной страницы и т. Д.). Не хорошо.

Регулярные выражения не сложны. Обычно это всего лишь случай:

RewriteRule ^account/orders/(\w+)$ /account/orders.php?type=$1 [L]

90% + моих правил переписывания выглядят так. Довольно простые вещи.

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