Возврат PHP-страницы на основе базового имени каталога без перенаправления
Я хочу, чтобы сервер возвращал определенную страницу PHP на основе имени каталога без перенаправления. Например:
http://www.example.com/home
должен вернуть тот же результат, что и:
http://www.example.com/index.php?page=home
но это не должно перенаправить адрес
4 ответа
Вам нужно создать специальный файл с именем.htaccess и поместить его в корневой каталог вашего веб-приложения. Содержимое файла может быть таким:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/home$ /index.php?page=home [L]
Затем настройте Apache (httpd.conf, httpd-vhosts.conf), чтобы ваше веб-приложение могло использовать этот файл конфигурации.htaccess.
<VirtualHost 127.0.0.1:80>
DocumentRoot "/path/to/your/webapp"
ServerName localhost
<Directory "/path/to/your/webapp">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Это хорошее чтение.
PHP не может сделать это без перенаправления, но есть множество решений:
Используйте mod_rewrite с apache (.htaccess)
RewriteEngine on
RewriteRule ^home$ /index.php?page=home
Другой способ - добавить index.php в /home, единственная функция которого - включить корневой каталог документа index.php.
Если вы используете Apache, вы можете заглянуть в сценарии htaccess. Есть множество вариантов, доступных через поиск Google
Посмотрите на фреймворки, такие как (мои любимые) CodeIngniter или Zend, но вы не ограничены этим или пытаетесь изобретать колесо, покупая свой собственный маршрутизатор