Использование nginx rewrite для скрытия или очистки URL-адресов?

Привет.

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

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

Ответов (5)

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

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

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

Спасибо :)

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

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

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

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

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

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

Вы можете использовать правило перезаписи 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.
}

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

http://codeigniter.com/