Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

Прошу прощения за рекламу на сайте. Я постарался сделать это максимально ненавязчиво и по минимуму. При чтении заинтересовавших вас статей она не будет вам мешать.
И если есть возможность поставить мой сайт в исключения у блокировщика рекламы, я буду очень признателен вам.

XAMPP выдаёт 404 ошибку всех ссылок, кроме главной

XAMPP выдаёт 404 ошибку всех ссылок, кроме главной

 

 

 

Собираю простенький движок сайта на php. Делаю на локальном компьютере установив XAMPP.

С чем столкнулся?

С тем, что имея одну точку входа на сайт — index.php, не могу контроллером скрипта (index.php) проверить какой адрес вбит у клиентского браузера.
То есть если я открываю site1.loc (адрес локального сайта), то index.php XAMPP`ом обрабатывается корректно и выдаётся результат работы скрипта.
Но, если я пишу адрес — site1.loc/contact, то XAMPP выводит на экран, в браузер, ошибку 404 (страница не найдена), а не страницу с контактами.

Даже имея файл .htaccess, всё равно была ошибка 404.

Оказывается, из-за того, что папка сайта находится не в директории по умолчанию, то на неё не распространяются правила описанные в файле конфигурации apache — httpd.conf.

Решение

Добавил в конец файла httpd.conf следующий блок кода:

<directory "/путь/к/нашему/сайту/">
    AllowOverride All
    Order allow,deny
    Allow from all
</directory>

Перезагружаем 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]

 

18 сентября 2018, 18:16    Александр Linux 0    758 0

 

 

 



Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.