Не вдається отримати доступ до підкаталогів, що не мають wordpress, оскільки wordpress перекриває їх із помилкою 404


35

Я посилаюся на це запитання, яке раніше задавали, і не відповіли відповідним чином: Wordpress переосмислює фактичні підкаталоги, а також сторінки / код "Wordpress", що не входять в помилку 404

У мене така ж проблема, і я спробував майже все, що знайшов у мережі. Це, безумовно, пов’язано з включенням постійних посилань у wordpress. Однак я помістив новий .htaccess файл у підкаталог з:

ПерепишітьEngine вимкнено

і проблема все ще існує. Навіть якщо я повністю видаляю файл wordpress .htaccess, проблема все ще існує.

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

Може хтось, будь ласка, запропонує інше рішення? Єдиний спосіб, коли я можу це виправити, - це вимкнути постійні посилання, але нам це потрібно.

Спасибі,

Ніколь


Що станеться, якщо перейменувати index.php в index.bak у кореневій папці WordPress? Чи досі каталог не доступний?
Horttcore

Ви намагалися переглянути новий базовий URL у своїй підпапці .htaccess (з цією підпапкою для значення)?
Седрик G

Відповіді:


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>
    

Одне з них повинно працювати для вас.


18

Це минуло працювало для мене для подібної ситуації:

Поставте це зверху .htaccess

ErrorDocument 401 default

2
Спасибі! Я пробував так багато речей, але це єдине рішення, яке працювало в моєму випадку: підкаталог, захищений паролем
Rado

2
Для мене теж працювало будь-яке пояснення, що це робить і чому це працює?
Асаф

Це працює для мене .. не використовуючи wordpress, а OpenCart і маючи ту ж проблему. Пояснення було б дуже корисно.
billynoah

4

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

Я просто заглядаю в свій htaccess оригінал:

# НАЧАЙТЕ WordPress

ПереписатиEngine On
RewriteBase /
ПерепишітьCond% {REQUEST_FILENAME}! -F
ПерепишітьCond% {REQUEST_FILENAME}! -D
ПереписатиРуле. /index.php [L]

# END WordPress

і поставити нову с

# НАЧАЙТЕ WordPress

ПереписатиEngine On
ПерепишітьBase / підкаталог
ПерепишітьCond% {REQUEST_FILENAME}! -F
ПерепишітьCond% {REQUEST_FILENAME}! -D
ПереписатиРуле. /subdirectoryfolder/index.php [L]

# END WordPress

Привіт @lizette. Ласкаво просимо на форуми WPSE. Ви можете перевірити, як працює тут форматування .
Pothi Kalimuthu

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.

У мене виникла ця проблема після встановлення скрипта кодигранта в тому самому кореневому каталозі, в якому встановлено 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', і це має працювати.


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?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.