Сейчас загружается

Разрешить htaccess выполнить скрипт из подпапки

разрешить htaccess

Если у вас на сервере работают правила .htaccess Но если в корне сайта создать любую папку и залить туда сторонний скрипт, то htaccess не дает запустить сторонний скрипт из браузера. что делать?

Проблема связана с тем, что файл .htaccess в корне сайта может содержать правила перезаписи (rewrite), которые применяются и к подпапкам. Это часто случается при использовании CMS (например, WordPress, Joomla, MODX и т.д.), где .htaccess настроен так, чтобы все запросы направлялись в ядро CMS для обработки маршрутов.

Возможные причины:

  1. Правила RewriteCond / RewriteRule перехватывают все запросы, даже к подпапкам.
  2. В CMS могут быть настроены глобальные правила, которые не исключают существующие директории.
  3. Отсутствует проверка на существование файла или директории перед перезаписью.

Как это исправить?

Проверьте содержимое .htaccess

Найдите там блок правил mod_rewrite, например:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Это типичный пример для CMS вроде WordPress. Он говорит:

«Если запрашиваемый файл или папка НЕ существует — отправь всё в index.php».

Всё правильно, но если вы создаёте подпапку, и хотите, чтобы она работала отдельно от CMS — убедитесь, что правила не перехватывают её.

Добавьте исключение для вашей папки

Допустим, вы создали папку /test/. Чтобы CMS не перехватывала запросы к ней, измените .htaccess в корне следующим образом:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Исключаем существующие файлы и папки
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Добавляем условие: если URI не начинается с /test/
    RewriteCond %{REQUEST_URI} !^/test/ [NC]

    # Тогда направляем в index.php
    RewriteRule . /index.php [L]
</IfModule>

Объяснение:

  • !^/test/ — исключает из перезаписи любые URL, начинающиеся с /test/
  • [NC] — нечувствителен к регистру

Создайте свой .htaccess в подпапке

Если вы заливаете сторонний скрипт в папку /test/, то добавьте в неё собственный .htaccess, например:

<IfModule mod_rewrite.c>
    RewriteEngine Off
</IfModule>

Или просто определите базовые настройки, чтобы CMS не влияла на поведение этой директории.

Проверьте настройки хостинга / сервера

Иногда хостеры используют настройки на уровне vhost, которые применяют .htaccess из корня ко всем подкаталогам. Это редко, но возможно. Если ничего не помогает — уточните у техподдержки хостинга.

Итог

Чтобы ваш сторонний скрипт в подпапке работал нормально:

✅ Убедитесь, что в основном .htaccess CMS есть исключения для ваших подпапок через RewriteCond %{REQUEST_URI} !^/имя_папки/
✅ Создайте в подпапке отдельный .htaccess с отключённым RewriteEngine
✅ Проверьте, что файлы действительно доступны по прямой ссылке (нет ошибок 403, 404)

Share this content:

Отправить комментарий