Невозможно получить доступ к папке, не принадлежащей установке WordPress

Вопрос или проблема

У меня есть сайт на WordPress, для которого я добавил HTML-папку с множеством файлов на сервер.

Когда я пытаюсь получить доступ к содержимому этой папки, например mywebsite.fr/my-html-folder/index.html, происходит перенаправление на mywebsite.fr/index.html, имя папки автоматически удаляется из URL…

Вы знаете, с чем это может быть связано? Возможно, это безопасность WordPress?

Вот мой htaccess:

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE "application/atom+xml" "application/javascript" "application/json" "application/ld+json" "application/manifest+json" "application/rdf+xml" "application/rss+xml" "application/schema+json" "application/vnd.geo+json" "application/vnd.ms-fontobject" "application/x-font-ttf" "application/x-javascript" "application/x-web-app-manifest+json" "application/xhtml+xml" "application/xml" "font/eot" "font/opentype" "image/bmp" "image/svg+xml" "image/vnd.microsoft.icon" "image/x-icon" "text/cache-manifest" "text/css" "text/html" "text/javascript" "text/plain" "text/vcard" "text/vnd.rim.location.xloc" "text/vtt" "text/x-component" "text/x-cross-domain-policy" "text/xml"

# SECTION BEGIN GIT PROTECTION
RedirectMatch 404 /\.git
# SECTION END GIT PROTECTION


# BEGIN WPSuperCache

<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:
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE “application/atom+xml” “application/javascript” “application/json” “application/ld+json” “application/manifest+json” “application/rdf+xml” “application/rss+xml” “application/schema+json” “application/vnd.geo+json” “application/vnd.ms-fontobject” “application/x-font-ttf” “application/x-javascript” “application/x-web-app-manifest+json” “application/xhtml+xml” “application/xml” “font/eot” “font/opentype” “image/bmp” “image/svg+xml” “image/vnd.microsoft.icon” “image/x-icon” “text/cache-manifest” “text/css” “text/html” “text/javascript” “text/plain” “text/vcard” “text/vnd.rim.location.xloc” “text/vtt” “text/x-component” “text/x-cross-domain-policy” “text/xml”

SECTION BEGIN GIT PROTECTION

RedirectMatch 404 /.git

SECTION END GIT PROTECTION

BEGIN WPSuperCache

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]

END WordPress

Ответ или решение

Проблема, с которой вы столкнулись, связана с правилами перезаписи URL в ваш файл .htaccess, который управляет маршрутизацией запросов на вашем веб-сайте WordPress. Когда вы добавляете папку с файлами, например my-html-folder, и пытаетесь получить доступ к файлам внутри неё, WordPress с помощью правил перезаписи направляет все запросы к файлу index.php, что приводит к удалению имени папки из URL.

Решение проблемы

Для решения этой проблемы вы можете внести небольшие изменения в файл .htaccess. Сделайте следующее:

  1. Откройте файл .htaccess для редактирования.

  2. Добавьте исключение для вашей папки перед правилами перезаписи WordPress. Это позволит вашему серверу Apache обрабатывать запросы к этой папке напрямую, без перенаправления их в index.php. Вставьте следующее правило перед секцией, содержащей # BEGIN WPSuperCache:

    RewriteCond %{REQUEST_URI} !^/my-html-folder/

    Полный пример вашего файла .htaccess может выглядеть так:

    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE "application/atom+xml" "application/javascript" "application/json" "application/ld+json" "application/manifest+json" "application/rdf+xml" "application/rss+xml" "application/schema+json" "application/vnd.geo+json" "application/vnd.ms-fontobject" "application/x-font-ttf" "application/x-javascript" "application/x-web-app-manifest+json" "application/xhtml+xml" "application/xml" "font/eot" "font/opentype" "image/bmp" "image/svg+xml" "image/vnd.microsoft.icon" "image/x-icon" "text/cache-manifest" "text/css" "text/html" "text/javascript" "text/plain" "text/vcard" "text/vnd.rim.location.xloc" "text/vtt" "text/x-component" "text/x-cross-domain-policy" "text/xml"
    
    # SECTION BEGIN GIT PROTECTION
    RedirectMatch 404 /.git
    # SECTION END GIT PROTECTION
    
    # BEGIN WPSuperCache
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/my-html-folder/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

Объяснение изменений

  • RewriteCond %{REQUEST_URI} !^/my-html-folder/: Это условие проверяет, что запрашиваемый URI не начинается с /my-html-folder/. Если запрос соответствует этому условию, правила перезаписи WordPress не будут применены, и запрос будет обработан сервером напрямую.

Дополнительные шаги

После внесения изменений убедитесь в следующем:

  1. Сохраните изменения в файле .htaccess и протестируйте доступ к папке. Попробуйте снова перейти по URL-адресу mywebsite.fr/my-html-folder/index.html.

  2. Очистите кэш сайта, если используете плагины кэширования, такие как WPSuperCache или другие, чтобы убрать старые кэшированные данные.

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

Оцените материал
Добавить комментарий

Капча загружается...