Возврат 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>

Это хорошее чтение.

http://httpd.apache.org/docs/current/misc/rewriteguide.html

PHP не может сделать это без перенаправления, но есть множество решений:

Используйте mod_rewrite с apache (.htaccess)

RewriteEngine on
RewriteRule ^home$ /index.php?page=home

Другой способ - добавить index.php в /home, единственная функция которого - включить корневой каталог документа index.php.

Если вы используете Apache, вы можете заглянуть в сценарии htaccess. Есть множество вариантов, доступных через поиск Google

Посмотрите на фреймворки, такие как (мои любимые) CodeIngniter или Zend, но вы не ограничены этим или пытаетесь изобретать колесо, покупая свой собственный маршрутизатор

Другие вопросы по тегам