Как избежать смены адреса в адресной строке в PHP
Вопрос
У меня одна проблема с адресной строкой (в браузере).URL-адрес домашней страницы моего сайта выглядит следующим образом: http://localhost/Website/index.php
Если я напишу .../Website/home.php
он загружает home.php
страница.Я думаю, что это небезопасно, если кто-либо может перейти на любую веб-страницу, которую хочет, зная ее адрес.Я хочу заблокировать автоматическое перенаправление URL-адресов в адресной строке.Пожалуйста, помогите мне сделать так, чтобы, если кто-то напишет .../home.php
адрес, на который он перенаправляет браузер index.php
в качестве страницы по умолчанию.
Нет правильного решения
Другие советы
Вся концепция всемирной паутины заключается в том, что каждый ресурс (например, каждая веб-страница) имеет уникальный идентификатор ресурса (адрес).Это неотъемлемая часть того, как работает Интернет, и вам следует соответствовать ему, а не избегать его.
Убедитесь, что у вас есть красивая большая ссылка на вашу домашнюю страницу, и люди будут использовать ее, если перейдут на другую страницу и не смогут найти то, что хотят.
Надеюсь, это поможет.
суммируя:Вы не можете сделать это.Как уже упоминалось, PHP — это язык серверной части это означает, что он не может управлять браузером (т.е.предотвращение изменения URL-адреса кем-либо).Читайте и переходите по ссылкам в Как работает PHP? чтобы узнать разницу между языками на стороне сервера и на стороне клиента.
Статьи в Википеде Всемирная паутина, Единый указатель ресурсов (URL) и Веб сервер Вам также может быть интересно получить общее представление о том, как работает WWW и что такое URL-адреса.
Но вы можете контролировать, к каким файлам можно получить доступ.Есть два способа:
Конфигурация веб-сервера
Большинство (каждый?) веб-сервер позволяет вам настраивать правила, определяющие, какие файлы должны быть доступны (так называемый контроль доступа).Это пример того, как это сделать с помощью веб-сервер Apache.
PHP:Передний контроллер
Вы также можете сделать это напрямую с помощью PHP (и небольшой настройки веб-сервера).Волшебное ключевое слово «она» — это Шаблон переднего контроллера.Это, например.класс, который действует как единая точка входа в ваше приложение.Это означает, что каждый запрос, например.к
http://localhost/Website/home.php
или
http://localhost/Website/foo/bar.php
перенаправляется (пересылается, как бы вы его ни назвали) и обрабатывается
http://localhost/Website/index.php
Таким образом, в конечном итоге вы можете и должны решить, какой контент увидит пользователь, если попытается получить доступ к определенному URL-адресу.
Это дает вам больше контроля над URL-адресами (видом), но вам придется приложить больше усилий для их настройки.
Если вам интересно, как это работает, предлагаю посмотреть Zend-фреймворк который реализует этот шаблон.
Открытый вопрос...
Хотя ты может сделать это, вопрос в том, нужно ли вам это делать.Если ты не хочешь home.php
чтобы быть доступным, почему вы вообще размещаете его на своем веб-сервере?
Или, может быть, у вас в голове сложилось неправильное представление о структуре сайта.А одинокий сайт состоит из несколько страницы (в большинстве случаев), например.
index.php // is the main page
about.php // is about the site or you
news.php // contains the latest news you provide
archive.php // older news or articles
...
Даже желательно, чтобы пользователь/посетитель мог получить доступ к этим страницам напрямую, введя URL-адрес в адресную строку или через закладку.Вот как работает веб-сайт или WWW.
PHP не может этого сделать;это серверная технология, поэтому она не может изменить поведение браузера.Просто не помещайте в каталог никаких других файлов, и браузер сообщит пользователю, что такого файла не существует, когда он попытается перейти к нему.
Вы можете получить этот результат даже без рамок.Если вы используете javascript и ajax для динамической загрузки контента, ваш URL-адрес не изменится.
Хотя я никогда не рекомендую это ради Google, это будет самый хороший способ сделать это, и он по-прежнему будет нормально работать с PHP.
Я бы послушался совета Сони, но если вы действительно этого хотите, вы можете создать иллюзию, используя HTML-фреймы.
Я согласен с ответами, опубликованными недавно.
Но если вам не нужно HTML
ты можешь войти в FLASH
или Java Applet
, как только они загрузятся, ваши URL-адреса больше не будут меняться.
Странное желание сделать, но простой способ (и не подходит ни для чего, кроме небольших сайтов) — использовать Header(LOcation:хххх).