Является ли файл htaccess абсолютно необходимым в рамках маршрутизатора? - PullRequest
0 голосов
/ 13 февраля 2011

Насколько я понимаю, создание файла htaccess создает проблему масштабируемости, поскольку каждый запрос Apache требует поиска (как я понимаю, 4 обращения к файлу).

Поскольку я точно знаю, когда моему приложению нужно искать «retty urls», есть ли способ просто обойти файл .httaccess и каким-то образом найти его через собственный доступ к файлу?

Кроме того, я могу заранее знать, как будет выглядеть симпатичный URL. Как я могу сделать маскировку наиболее плавно?

Вот пример: Я сделал тестовую страницу для всех деревьев: http://www.comehike.com/outdoors/trees/trees.php

И мое приложение может знать красивые URL для создания.
Но у меня есть один файл tree.php здесь: http://www.comehike.com/outdoors/trees/tree.php?tree_id=24

Как я могу заставить его взять tree_id (для поиска в БД), а также выглядеть примерно так: http://www.comehike.com/outdoors/trees/oak-tree

ps - я использую php

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

для создания любого красивого URL (например, http://www.comehike.com/outdoors/trees/oak-tree), вы должны указать apache, какая часть этого URL является вашим скриптом (без *.php в нем, как должен знать apache). " вы должны сказать apache"что означает, что вы должны изменить конфигурацию apache - никак не обойтись. Вы можете сделать это с помощью .htaccess (с упомянутым вами снижением производительности) или в другом месте .

что вы можете сделать, чтобы минимизировать изменение конфигурации apache, это настроить только один основной маршрутизатор (например, http://www.comehike.com/outdoors) и позволить ему обрабатывать все пути под ним.

0 голосов
/ 13 февраля 2011

Вы не должны быть слишком обеспокоены накладными расходами при использовании файла .htaccess. Это не окажет большого влияния на нагрузку на ваш сервер. Что касается вашей красивой схемы URL, вы можете смотреть не дальше, чем StackOverflow! Обратите внимание на структуру URL этого вопроса. Похоже:

http://stackoverflow.com/questions/[ID]/[QUESTION]

Идентификатор, как вы, вероятно, догадались, - это уникальный идентификатор, задаваемый каждому вопросу о SO. Вопрос, который следует (ваш эквивалент - имя дерева), является просто фиктивным текстом. Попробуйте изменить что-либо после /4985258/ и повторите попытку. Это все еще отправляет вас к этому вопросу. Это потому, что Mod Rewrite, который использует SO, игнорирует все после идентификатора.

В вашем случае я бы предложил структуру URL, подобную этой:

http://www.comehike.com/outdoors/trees/24/oak-tree

Использование следующего htaccess mod_rewrite:

RewriteEngine On
RewriteRule ^/outdoors/trees/([0-9]+) /outdoors/trees/tree.php?tree_id=$1

Это будет соответствовать любому URL с идентификатором в нем и отправлять его в скрипт tree.php. Вы можете добавить фиктивный текст заголовка ко всем своим ссылкам.


EDIT Если вы действительно обеспокоены незначительным падением производительности, которое вы получите с помощью файла htaccess, вы всегда можете переместить весь код из ваших файлов htaccess в объявление VirtualHost, а затем объявить AllowOverride None, чтобы Apache не мог искать файлы htaccess. Обычно вы можете найти свои виртуальные хосты в /etc/apache2/sites-available/default в Linux или C:\apache\conf\vhosts.conf в Windows.

...