Собираю простенький движок сайта на 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 ошибку всех ссылок кроме главной
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()