Невозможно получить доступ к поддиректориям вне WordPress, так как WordPress перенаправляет их на 404 ошибку

16 июн. 2011 г., 10:54:22
Просмотры: 111K
Голосов: 43

Я ссылаюсь на этот ранее заданный вопрос, который не получил подходящего ответа: WordPress переопределяет существующие поддиректории а также Страницы/код вне "WordPress" получают ошибку 404

У меня та же проблема, и я перепробовала практически все решения, которые нашла в интернете. Это определенно связано с включенными постоянными ссылками в WordPress. Однако, я добавила новый файл .htaccess в поддиректорию с:

RewriteEngine off

и проблема все еще существует. Даже если я полностью удалю файл .htaccess WordPress, проблема остается.

Я также пробовала некоторые другие предложенные решения, такие как ErrorDocument 401 "Несанкционированный доступ" и ErrorDocument 404 "Несанкционированный доступ" и Redirect 301 /mysubdirectory http://www.mydomain.com/mysubdirectory/index.html в различных местах, но все безрезультатно.

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

Спасибо,

Николь

3
Комментарии

Что произойдет, если переименовать index.php в index.bak в корневой папке WordPress? Будет ли директория по-прежнему недоступна?

Horttcore Horttcore
16 июн. 2011 г. 11:44:21

Пробовали ли вы переопределить базовый URL в .htaccess вашей подпапки (указав эту подпапку в качестве значения)?

Cédric G Cédric G
5 авг. 2011 г. 18:19:53

Ого, не могу отдать html-файл из подпапки! Уже больше часа мучаюсь и все без результата. Это должно быть одной из самых простых вещей. Какой процент из миллионов сайтов использует подпапки. ААААААААААААААААААА

Paul McCarthy Paul McCarthy
31 авг. 2022 г. 16:31:20
Все ответы на вопрос 8
0
33

Предполагаю, что WordPress установлен в корне вашего сайта, а внешние директории также находятся в корне. Проблема возникает из-за иерархии файлов .htaccess. Директивы из .htaccess верхнего уровня распространяются вниз и применяются ко всем вложенным директориям.

В этом случае у вас есть несколько вариантов:

  1. Перенесите WordPress в отдельную директорию. См.: http://codex.wordpress.org/Moving_WordPress Если переместить WordPress в собственную директорию на том же уровне иерархии сервера, что и другие директории, правила перезаписи WordPress не будут влиять на них.

  2. RewriteEngine Off - обычно это работает. Если не срабатывает, проверьте, не используете ли вы wildcard DNS. Wildcard-запись * в DNS, указывающая на ваш веб-сервер, может нарушать работу .htaccess и поддоменов.

  3. В файле .htaccess в корне сайта добавьте следующий код ВЫШЕ директив WordPress:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>
    

Один из этих способов должен вам помочь.

17 июн. 2011 г. 17:33:00
3
22

Это сработало для меня в похожей ситуации:

Поместите этот код в начало файла .htaccess

ErrorDocument 401 default
16 июн. 2011 г. 12:39:43
Комментарии

Спасибо! Я перепробовал кучу вариантов, но это единственное решение, которое сработало в моем случае: защищенная паролем поддиректория.

Rado Rado
7 мар. 2013 г. 01:27:48

У меня тоже сработало, можно объяснение, что это делает и почему работает?

Asaf Asaf
10 авг. 2013 г. 11:27:48

Это сработало и у меня... Я использую не WordPress, а OpenCart и столкнулся с той же проблемой. Объяснение было бы очень полезным.

You Old Fool You Old Fool
28 авг. 2014 г. 22:09:24
0

Если вы всё ещё получаете ошибки 404 при отключённом htaccess, проверили пути и уверены, что файлы существуют, то остаются только эти три варианта...

Варианты...

  1. Сервер, скорее всего, работает под управлением операционной системы с учётом регистра символов. Это означает, что если вы вводите путь без точного соответствия символов и их регистра, он просто не сработает.
  2. Права доступа: Возможно, у вас неправильные права доступа к файлу, папке или родительской папке. Попробуйте изменить права доступа на 755 для файлов, папок и родительских папок. Если у вас есть доступ через SSH (терминал), перейдите в корневую директорию и выполните команду chmod -R 755 mydir, чтобы рекурсивно установить права для всех элементов.
  3. Если проблема сохраняется после всех этих действий, значит, у вас проблема с конфигурацией сервера (скорее всего, Apache). Вам нужно обратиться к вашему хостинг-провайдеру.

Если ничего из этого не помогло, значит, вам нужен новый хостинг.

17 июн. 2011 г. 17:44:49
0

Вижу, что эта тема уже несколько месяцев, но на всякий случай, если у вас так и не получилось решить проблему!

У меня была похожая ситуация, но моя проблема заключалась в том, что WordPress был установлен в поддиректории, что блокировало доступ по URL к папкам в корне (вне директории установки WP), но только когда включены постоянные ссылки. Для решения я скопировал (не переместил!) оба файла index.php и .htaccess из поддиректории с установкой WordPress и разместил их в корневой public_html (или любой другой поддиректории, которую вы пытаетесь использовать вне установки WP). Файл .htaccess уже содержит условия перезаписи для постоянных ссылок:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

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

25 мая 2012 г. 21:46:55
2

Когда я копирую свои файлы на тот же сервер, но в другую поддиректорию, то при попытке доступа к страницам index.php работает нормально, а другие страницы не работают и выдают ошибку 404. Извините за мой плохой английский!

Я посмотрел свой оригинальный .htaccess:

# BEGIN WordPress

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

# END WordPress

И заменил его на новый с указанием поддиректории:

# BEGIN WordPress

RewriteEngine On
RewriteBase /subdirectoryfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectoryfolder/index.php [L]

# END WordPress
13 сент. 2012 г. 14:14:06
Комментарии

Привет, @lizette. Добро пожаловать на форумы WPSE. Возможно, тебе будет полезно ознакомиться с правилами форматирования здесь.

Pothi Kalimuthu Pothi Kalimuthu
21 сент. 2012 г. 05:59:46

Будь осторожна и никогда не меняй структуру постоянных ссылок, потому что при этом WordPress перезапишет всё, что находится между #BEGIN WordPress и #END WordPress.

clayRay clayRay
13 окт. 2020 г. 06:53:26
0

Почти вырвав все волосы при редактировании htaccess, я наконец нашел решение, которое будет работать для WordPress.

Я столкнулся с этой проблемой после установки скрипта CodeIgniter в тот же корневой каталог, где установлен WordPress.

После попыток всех трюков, перечисленных здесь, я все равно получал 404 ошибки на страницах, связанных с новым скриптом.

Я заметил, что htaccess WordPress переопределял htaccess скрипта. Также я заметил, что другие установки WordPress в том же каталоге не имели этой ошибки 404.

Я просто взял htaccess из новой установки WordPress в том же серверном каталоге и добавил его в папку, где находится мой скрипт. Вот как это выглядит:

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

Замените subdirectoryname на имя вашего каталога и поместите этот файл htaccess в папку, где находится ваш скрипт.

Пример: Если сайт установлен здесь

public_html/

а новая папка находится по адресу

`public_html/example`

скопируйте htaccess выше и сохраните его внутри папки 'example', и это должно заработать.

10 дек. 2015 г. 15:59:38
0

Я неоднократно просматривал ответы здесь, так как столкнулся с похожей проблемой. У меня были файлы в подкаталоге, которые вызывали ошибку 404 при попытке доступа к ним. Все манипуляции с .htaccess не помогли исправить ситуацию, как и сказала Кирстен Дуглас, WordPress уже выполняет эту работу.

Мое решение

После проверки error_log на сервере я нашел эту статью. Я получал сообщение о неправильном uid для скриптов. Также я заметил, что ошибка 404 возникала не из-за отсутствия файла, а потому что сервер не мог отдать файл 500.html, то есть у меня была ошибка 500.

Оказалось, что я создавал файлы от имени root, и мне нужно было изменить владельца на владельца веб-файлов.

Надеюсь, это поможет другим, кто столкнулся с такой же проблемой!

2 окт. 2013 г. 10:54:14
0

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

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# остальные правила перезаписи WordPress

Однако, вы говорите, что проблема возникает даже без файла .htaccess WordPress? Каково содержимое вашего .htaccess в поддиректории?

16 июн. 2011 г. 11:58:45