Скрытие файла в адресной строке - PullRequest
0 голосов
/ 13 мая 2010

Я создал систему разбивки на страницы PHP, но я хочу скрыть переменную _GET в адресной строке.

На данный момент моя выглядит так: http://example.com/images.php?page=1

Но я видел несколько сайтов, на которых есть http://example.com/images/1/.

Просто интересно, как они идут по этому поводу? Может кто-то указать мне верное направление? Приветствия

Ответы [ 6 ]

6 голосов
/ 13 мая 2010

Вам понадобится поддержка со стороны вашего веб-сервера, чтобы получить правильные запросы и переписать запросы /images/1/ внутри к /images.php?page=1. Большинство веб-серверов имеют модуль или расширение для поддержки такого поведения, как mod_rewrite Apache , mod_rewrite lighttpd , модуль переписывания ISAPI для ISS и т. Д.

1 голос
/ 13 мая 2010

Это называется PATH_INFO

Сервер должен поддерживать и включать его.

Если это так, то вы можете получить к нему доступ, используя $_SERVER["PATH_INFO"]

0 голосов
/ 13 мая 2010

Обычно все запросы перенаправляются (их URL перезаписывается внутри) в один PHP-скрипт с использованием Apache mod_rewrite и RewriteEngine, затем (в этом скрипте) URL-адрес проверяется, и обработчик соответствует этому URL-адресу (если есть еще обработчики) с соответствующими аргументами называется. Некоторые фреймворки в PHP, обычно MVC * , полностью построены на одном index.php , на который все запросы перенаправляются (перезаписывается URL).

Если вам нужно просто решить проблему с ?page=, попробуйте переписать URL /images/1/ в /images.php?page=1 (как предлагает Gumbo) с помощью этого в конфигурации Apache (например, файл .htaccess ) :

RewriteEngine on
RewriteRule ^images/([0-9]+)/?$ images.php?page=$1 [L]
0 голосов
/ 13 мая 2010

Если ваш сервер Apache, вы можете создать файл с именем .htaccess (у него нет имени файла, только расширение - стоит дать ему имя на локальном компьютере, потому что некоторые файловые системы скрывают файлы без имени) и узнать, как использовать RewriteRules

Это очень легко использовать для простых переписываний, как вы хотите.

Пример файла .htaccess:

RewriteEngine On

#Translate http://address.com/images/1/ to http://address.com/images.php?page=1
RewriteRule ^images/(.*)$ / images.php5?page=$1
0 голосов
/ 13 мая 2010

Если вы используете apache, то вы можете использовать mod_rewrite, чтобы сделать этот вид магии: http://en.wikipedia.org/wiki/Rewrite_engine

0 голосов
/ 13 мая 2010

Большинство фреймворков позаботятся об этом, но вам нужно настроить свой веб-сервер для его обработки. Вот инструкции от CodeIgniter по настройке apache htacces.

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