#php #.htaccess #web-services
Вопрос:
Могу ли я использовать специальный текст в командной строке для чтения .htaccess
файла со php -S
встроенной службой в моем проекте
Пример : ~/project> $ php -S localhost:8000 -read .htaccess
в моем проекте для проверки переменной $_GET['url']
для перенаправления маршрута управления на какой-либо файл.
Возможный способ ?
Мой мини-проект :
- Это мой каталог проектов
project
|- src
|- index.php
|- .htaccess
- Код в
.htaccess
файле :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(. )$ index.php?url=$1 [QSA,L]
</IfModule>
- Код в
index.php
файле :
<?php
$url = $_GET['url'];
if ($url == "hello") {
// go to hello file
} else {
// go to other file
}
?>
Комментарии:
1. Запросы на физически не существующие файлы направляются в index.php или index.html в текущей папке автоматически, и если ни один из них не найден, он продолжает проверку родительской папки (см. php.net/manual/en/features.commandline. webserver.php ) Однако вы не получите параметр GET автоматически, вам нужно будет найти первоначально запрошенный URL-адрес внутри $_SERVER.
2. Если вы реализуете вышесказанное, вы можете использовать ту же логику позже, когда все это будет выполняться на «реальном» веб-сервере, который использует файлы .htaccess / может выполнять перезапись. Просто перепишите на index.php тогда без каких-либо параметров или используйте
FallbackResource
вместо этого директиву.
Ответ №1:
htaccess
специфичен для сервера Apache. Он не работает со встроенным веб-сервером PHP.
Комментарии:
1. У тебя есть способ ? для решения этой проблемы ? самим собой . файл htaccess
2. Ну, в PHP вы можете установить
Location
заголовок для перехода к другому файлу . Но… почему бы вам просто не использовать Apache? Вы не будете использовать встроенный сервер PHP, когда будете запускать свой сайт. Если вы также протестируете Apache, вы получите более точное представление о том, как будет работать живая система.