Используя nginx rewrite, чтобы скрыть или очистить URL? - PullRequest
3 голосов
/ 28 февраля 2009

Привет.

Я пытался использовать регулярные выражения и переписывать, но я новичок в этом. У меня есть простой сайт, только один каталог, все, что я хочу, это переписать domain.com/file.php?var=value на domain.com, убедившись, что пользователь будет видеть только domain.com в адресной строке во время навигации по сайту ( даже если я начну делать сайт более сложным).

Проще говоря, это замораживает URL-адрес, хотя, если сайт растет, я бы предпочел использовать подход с "чистым URL-адресом", но я все еще на базовом php, и я чувствую, что мне нужно будет rtfm на http / 1.1

Ответы [ 5 ]

4 голосов
/ 28 февраля 2009

Вы можете использовать правило перезаписи nginx следующим образом:

rewrite  ^([^.]*)$  /index.php

для отправки всех запросов, которые не содержат "." на ваш скрипт index.php. В вашем php-скрипте взорвите URL запроса, чтобы получить переданные параметры, а затем вызовите php-страницу, которую вы хотите:

#URL /people/jack_wilson
$url_vars = explode('/',$_SERVER['request_uri']); # array('','people','jack_wilson');
$page = $url_vars[1];
if($page == 'people'){
   $username = $url_vars[2];
   require('people.php'); #handle things from here.
}
3 голосов
/ 28 февраля 2009

Обычно этот тип «чистого» URL-адреса обычно выполняется с рамкой-оберткой для всего сайта. Браузер показывает URL только этого фрейма, и его содержимое может быть любым.

Но я на самом деле не рекомендую этого, потому что пользователь может захотеть добавить в закладки «грязный» URL.

Этот тип обфускации URL-адресов снижает удобство использования для опытных пользователей.

Не для того, чтобы быть придурком, но я обычно вижу этот тип обфускации URL только на "вычурных" сайтах, которые больше заботятся о том, как выглядит их адресная строка, чем об удобстве их использования. ИМХО радовать ваших пользователей с помощью улучшенного удобства использования.

0 голосов
/ 28 февраля 2009

Вы также можете взглянуть на PHP-фреймворк, такой как Code Igniter, который будет обрабатывать все стороны PHP для вас.

http://codeigniter.com/

0 голосов
/ 28 февраля 2009

Я не (со знанием дела) думаю, что безопасно показывать переменные php в адресной строке (хотя они все равно отображаются в строке состояния некоторых браузеров ...). В идеале пользователь не знает, что за сайт использует за кулисами - я настраиваю страницы ошибок для начинающих. И да, для эстетики. Если бы я мог переписать на domain.com/foo/bar, я был бы счастлив; Предполагая, что nginx будет обрабатывать «перевод обратно в уродливые URL», если он получит такой запрос, что, я думаю, он делает с директивами location. Но наличие domain.com/file.php?var1=value&var2=value своего рода раздражает меня, заставляет меня чувствовать, что я слишком много раскрываю сайт.

Фреймы не рекомендуются (особенно из-за поисковых систем), и я пытаюсь придерживаться xhtml 1.1 Strict (пока все хорошо). Если контент хорошо продуман, прост в навигации, доступен независимо от выбора браузера, интуитивно понятен и т. Д ... я думаю, я мог бы жить с симпатичными URL-адресами:)

Я бы с радостью пролистал любой материал rtfm, касающийся хороших технологий веб-дизайна, php, http / 1.1 и всего, что заставило вас пойти «Да! в 4 часа утра

Спасибо:)

[если я правильно понимаю этот сайт, это должен быть ответ на оригинальный пост, а не на ответ ... извините]

0 голосов
/ 28 февраля 2009

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

...