@BarneyGumble

Как настроить прямой доступ к php файлу в .htaccess?

Добрый день

Перенёс свой локальный Wordpress-сайт на внешний хостинг, всё вроде бы работает хорошо, но не могу напрямую открыть свои кастомные скрипты в браузере которые складывал в каталог /custom относительно корня сайта

При попытке открыть любой из таких скриптов по условному адресу https://site.com/custom/test.php получаю 404-ю ошибку темы Вордпресса.

Пара моментов:
- Если убрать .htaccess - скрипты по вышеуказанному адресу начинают открываться корректно
- если переложить /custom/test.php в корень сайта, то он корректно открывается по адресу https://site.com/test.php

Доступов к редактированию конфига Apache нет, т.к. это обычный хостинг, а не VPS. Хотя, как я понимаю, проблема именно в настройках сервера.

Содержимое .htaccess стандартное от Wordpress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


Подскажите, пожалуйста, как можно перенастроить .htaccess на запуск скриптов в браузере из подкаталога?
  • Вопрос задан
  • 327 просмотров
Решения вопроса 2
zkrvndm
@zkrvndm
Архитектор решений
Внутри /custom создай пустой файл .htaccessи впиши в него RewriteEngine Off

.htaccess — это дополнительный конфигурационный файл Apache, который позволяет настраивать работу веб-сервера для каждой отдельной директории, не влияя на глобальные настройки Apache.
Ответ написан
@dodo512
При Basic Auth вначале сервер отвечает клиенту статусом 401.
Браузер отображает страницу с запросом логина/пароля.

Как вместо 401 получается 404 от Wordpress?
Если в настройках Apache с помощью ErrorDocument для 401 указан какой-то путь, то происходит внутреннее перенаправление на этот адрес и весь список правил mod_rewrite выполняется заново.
Если файл не найден запрос отправляется в index.php и Wordpress меняет статуc на 404.

Можно в файле /.htaccess или /custom/.htaccess указать для 401 какой-нибудь существующий файл.
Тогда запрос не будет попадать в Wordpress.
ErrorDocument 401 /file.html
Если указать не путь к файлу, а какой-то текст.
ErrorDocument 401 " Some text "
То не будет выполнения правил mod_rewrite и запрос не попадёт в Wordpress.
Ну ещё вариант специальное значение default восстановит значение по умолчанию.
ErrorDocument 401 default

Другой вариант добавить в файл /.htaccess исключение для запросов со статусом 401 и пустить их в обход правил Wordpress.
RewriteCond %{ENV:REDIRECT_STATUS} =401
RewriteRule ^ - [L]

Ставить выше правил правил Wordpress.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы