Собираю простенький движок сайта на php. Делаю на локальном компьютере установив XAMPP.
С чем столкнулся?
С тем, что имея одну точку входа на сайт — index.php, не могу контроллером скрипта (index.php) проверить какой адрес вбит у клиентского браузера.
То есть если я открываю site1.loc
(адрес локального сайта), то index.php XAMPP`ом обрабатывается корректно и выдаётся результат работы скрипта.
Но, если я пишу адрес — site1.loc/contact
, то XAMPP выводит на экран, в браузер, ошибку 404 (страница не найдена), а не страницу с контактами.
Даже имея файл .htaccess
, всё равно была ошибка 404.
Оказывается, из-за того, что папка сайта находится не в директории по умолчанию, то на неё не распространяются правила описанные в файле конфигурации apache — httpd.conf
.
Добавил в конец файла httpd.conf
следующий блок кода:
AllowOverride All Order allow,deny Allow from all
Перезагружаем XAMPP и всё начинает работать как надо.
P.S. Для примера листинг файла .htaccess
AddDefaultCharset UTF-8 DirectoryIndex index.php index.html #Включаем работу механизма преобразования RewriteEngine on # {REQUEST_FILENAME} Полный путь в файловой системе сервера к файлу или скрипту соответствующим этому запросу. # [NC] - Регистр не имеет значения, т.е., нет различий между 'A-Z' и'a-z' # OR (либо следующее условие) Используйте для комбинирования условий в правилах OR вместо AND # -f СравниваемаяСтрока считается путем, проверяется существование этого пути и то что этот путь является обычным файлом RewriteCond %{REQUEST_FILENAME} -f [NC,OR] # -d СравниваемаяСтрока считается путем, проверяется существование этого пути и то что этот путь является каталогом. RewriteCond %{REQUEST_FILENAME} -d [NC] RewriteRule .* - [L] #site.ru/cat/dev/, сервер через .htaccess будет обрабатывать команду — site.ru?id=cat&p=dev #RewriteRule ^([a-z]+)/([a-z]+)/$ ?id=$1&p=$2 [L] # site.ru/primer/, сервер через .htaccess будет обрабатывать команду — site.ru?id_news=primer #RewriteRule ^([a-z]+)/$ ?id_news=$1 [L] RewriteRule ^(.*)$ ?path=$1 [QSA,L]
XAMPP, 404 ошибку всех ссылок кроме главной
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()