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

35

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

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

Перезаписать двигатель выключен

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

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

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

Благодарность,

Николь

Николь
источник
Что произойдет, если вы переименуете index.php в index.bak в корневой папке WordPress? Каталог по-прежнему недоступен?
Хорткор
Вы пытались переопределить базовый URL в вашей подпапке .htaccess (с этой подпапкой для значения)?
Седрик Г

Ответы:

29

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

Если это так, вы можете сделать одну из следующих вещей:

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

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

  3. В файле .htaccess в корне своего сайта добавьте следующие СВЕДЕНИЯ о директивах WordPress .htaccess:

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

Один из них должен работать для вас.

Elpie
источник
18

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

Поместите это сверху .htaccess

ErrorDocument 401 default
mike23
источник
2
Благодарность! Я пробовал так много вещей, но это единственное решение, которое сработало для моего случая: защищенный паролем подкаталог
Rado
2
Сработало для меня тоже, какие-либо объяснения относительно того, что это делает и почему это работает?
Асаф
Это работает для меня .. не используя WordPress, но OpenCart и с той же проблемой. Объяснение было бы действительно полезно.
Billynoah
4

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

Я просто смотрю в свой htaccess оригинал:

# НАЧАТЬ WordPress

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

# КОНЕЦ WordPress

и поставить новый с

# НАЧАТЬ WordPress

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

# КОНЕЦ WordPress
Лайзетт
источник
Привет @ lizette. Добро пожаловать на форумы WPSE. Вы можете проверить, как форматирование работает здесь.
Поти Калимуту
4

Я вижу, что этой ветке несколько месяцев, но на тот случай, если вы так и не заработали!

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

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

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

Кирстен Дуглас
источник
3

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

Опции...

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

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

Патрик
источник
2

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

У меня была эта проблема после установки скрипта codeiginter в тот же корневой каталог, в котором установлен 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>

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

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

public_html/

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

`public_html/example`

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

NJENGAH
источник
1

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

Мое решение

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

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

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

Дэн
источник
0

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

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

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

TheDeadMedic
источник