Tidak dapat mengakses subdirektori non-wordpress karena wordpress menimpanya dengan kesalahan 404

35

Saya merujuk ke pertanyaan ini yang sebelumnya ditanyakan dan tidak dijawab dengan tepat: Wordpress mengesampingkan subdirektori yang sebenarnya dan juga halaman / kode Non "Wordpress" mendapatkan 404 kesalahan

Saya memiliki masalah yang sama dan saya telah mencoba hampir semua yang saya temukan di internet. Ini pasti terkait dengan permalink diaktifkan di wordpress. Namun, saya telah meletakkan file .htaccess baru di subdirektori dengan:

Menulis ulang mesin

dan masalahnya masih ada. Bahkan jika saya benar-benar menghapus file .htaccess wordpress masalah masih ada.

Saya juga telah mencoba beberapa solusi yang disarankan lainnya seperti ErrorDocument 401 "Akses tidak sah" dan ErrorDocument 404 "Akses tidak sah" dan Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html di berbagai lokasi semuanya tidak berhasil .

Bisakah seseorang menawarkan solusi lain? Satu-satunya cara saya dapat memperbaikinya adalah untuk mematikan permalink tetapi kami membutuhkannya.

Terima kasih,

Nicole

Nicole
sumber
Apa yang terjadi jika Anda mengganti nama index.php menjadi index.bak di folder root WordPress? Apakah direktori tersebut masih belum dapat diakses?
Horttcore
Sudahkah Anda mencoba mendefinisikan ulang url dasar di sub-folder .htaccess Anda (dengan sub-folder ini untuk nilainya)?
Cédric G

Jawaban:

29

Saya berasumsi bahwa Anda meletakkan WordPress di root situs Anda dan direktori eksternal juga di root situs Anda. Alasan ini terjadi adalah bahwa file .htaccess mengikuti hierarki. Arahan apa pun yang ada di file .htaccess tingkat atas mengalir ke bawah dan berlaku untuk semua direktori di bawahnya.

Jika demikian, Anda dapat melakukan salah satu dari beberapa hal:

  1. Pindahkan WordPress Anda ke direktori sendiri. Lihat: http://codex.wordpress.org/Moving_WordPress Jika Anda memindahkan WordPress ke direktori sendiri sehingga berada pada level yang sama dalam hierarki direktori server Anda dengan direktori lain, aturan penulisan ulang WordPress tidak dapat memengaruhi direktori lain.

  2. RewriteEngine Off - ini biasanya bekerja. Jika tidak berfungsi, periksa apakah Anda tidak menggunakan pengaturan DNS wildcard. Jika Anda memiliki catatan wildcard * nama host yang menunjuk ke server web Anda di pengaturan DNS Anda, itu dapat menyebabkan kekacauan dengan .htaccess dan subdomain.

  3. Di file .htaccess di root situs Anda, tambahkan berikut ini DI ATAS arahan WordPress .htaccess:

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

Salah satunya harus bekerja untuk Anda.

Elpie
sumber
18

Ini telah berhasil bagi saya di masa lalu untuk situasi yang sama:

Letakkan ini di atas .htaccess

ErrorDocument 401 default
mike23
sumber
2
Terima kasih! Saya sudah mencoba banyak hal, tetapi ini adalah satu-satunya solusi yang berhasil untuk kasus saya: subdirektori yang dilindungi kata sandi
Rado
2
Bekerja untuk saya juga, ada penjelasan tentang apa yang dilakukannya dan mengapa itu berhasil?
Asaf
Ini berfungsi untuk saya .. tidak menggunakan wordpress tetapi OpenCart dan memiliki masalah yang sama. Penjelasan akan sangat membantu.
billynoah
4

ketika saya menyalin file saya ke server yang sama tetapi dengan folder subdirektori yang berbeda sehingga ketika saya mencoba mengakses halaman saya, index.php bekerja dengan baik tetapi halaman lain tidak dan memberi saya kesalahan 404. Maaf untuk bahasa Inggris saya yang buruk !!

Saya hanya melihat ke htaccess saya yang asli:

# MULAI WordPress

Tulis Ulang Hidup
RewriteBase /
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /index.php [L]

# END WordPress

dan menempatkan yang baru

# MULAI WordPress

Tulis Ulang Hidup
RewriteBase / subdirektori folder
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /subdirectoryfolder/index.php [L]

# END WordPress
lizette
sumber
Hai @ Lisette. Selamat datang di forum WPSE. Anda mungkin ingin memeriksa cara kerja pemformatan di sini.
Pothi Kalimuthu
4

Saya melihat utas ini berumur beberapa bulan, tetapi untuk berjaga-jaga seandainya Anda tidak pernah berhasil!

Saya memiliki masalah yang sama, tetapi masalah saya adalah bahwa instalasi wordpress terletak di subdirektori yang mencegah akses URL ke folder di dalam root (di luar direktori instalasi WP), tetapi hanya ketika permalink diaktifkan. Untuk mengatasi ini, saya menyalin index.php dan .htaccess (copy not move) dari subdirektori tempat instalasi WP ditempatkan dan menempatkan keduanya di root public_html (atau subdirektori apa pun yang Anda coba akses di luar instalasi WP direktori). File .htaccess sudah memiliki kondisi penulisan ulang untuk permalink:

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

Aktifkan permalink untuk menyegarkan dan itu memecahkan semua masalah. Pastikan izin Anda untuk folder root diatur dengan benar juga karena ini telah menyebabkan masalah pada saya di masa lalu.

Kirsten Douglas
sumber
3

Jika Anda masih mendapatkan 404 dengan htaccess dinonaktifkan dan Anda telah memverifikasi path dan Anda tahu file ada di sana maka satu-satunya pilihan Anda yang tersisa adalah tiga ...

Pilihan...

  1. Server sangat mungkin menjalankan sistem operasi case-sensitive. Yang berarti jika Anda mengetik lintasan dan tidak menggunakan karakter yang tepat dan casing itu tidak akan berfungsi.
  2. Izin: Anda mungkin memiliki izin yang salah pada file atau folder atau folder induk. Cobalah untuk mengubah izin menjadi 755 pada file, folder, dan folder induk. Jika Anda memiliki akses ssh (terminal), pergi ke root Anda dan jalankan "chmod -R 755 mydir" dan itu akan secara rekursif mengatur izin untuk semuanya.
  3. Jika Anda masih mengalami masalah setelah semua itu, maka Anda memiliki masalah konfigurasi server (mungkin Apache). Anda perlu berbicara dengan penyedia hosting Anda tentang hal itu.

Jika tidak ada yang berhasil maka Anda memerlukan host baru.

Patrick
sumber
2

Setelah hampir mencabut rambut saya mengedit htaccess saya akhirnya menemukan solusi yang akan bekerja untuk WordPress.

Saya punya masalah ini setelah menginstal skrip codeiginter pada direktori root yang sama dengan yang diinstal WordPress.

Setelah mencoba semua trik yang tercantum di sini saya masih mendapatkan 404 kesalahan pada halaman yang terkait dengan skrip baru.

Saya mencatat bahwa htaccess WordPress mengatasi htaccess skrip. Saya juga mencatat bahwa instalasi WordPress lainnya di direktori yang sama tidak memiliki kesalahan 404 ini.

Saya cukup mengadopsi htaccess dari instalasi WordPress baru di direktori server yang sama dan menambahkannya di folder tempat skrip saya berada. Berikut ini tampilannya:

<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>

Ganti subdirektori dengan nama direktori Anda dan tempatkan file htaccess ini di dalam folder tempat skrip Anda berada.

Contoh: Jika situs diinstal di sini

public_html/

dan folder baru berada

`public_html/example`

salin htaccess di atas dan simpan di dalam folder 'example' dan ini akan berhasil.

NJENGAH
sumber
1

Saya telah melihat tanggapan di sini beberapa kali ketika saya mengalami masalah yang sama. Saya memiliki file di subdirektori yang akan menyebabkan kesalahan 404 ketika saya mencoba mengaksesnya. Semua hal .htaccess gagal untuk memperbaikinya, seperti yang dikatakan Kirsten Douglas, Wordpress sudah melakukan pekerjaannya.

Solusi saya

Saya menemukan artikel ini setelah memeriksa error_log di server. Saya mendapat pesan tentang salah uid untuk skrip. Saya juga memperhatikan bahwa 404 tidak dilempar karena file, tetapi karena server tidak dapat menyajikan file 500.html yaitu saya memiliki kesalahan 500.

Ternyata saya membuat file sebagai root, dan perlu mengubah kepemilikan ke pemilik webfiles.

Saya harap ini membantu orang lain yang memiliki masalah yang sama!

Dan
sumber
0

Anda harus bisa menambahkan RewriteCondarahan yang akan memastikan aturan WordPress diabaikan untuk permintaan di dalam subfolder Anda.

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

Namun, Anda mengatakan bahwa bahkan tanpa WordPress .htaccessAnda mengalami masalah? Apa isi subdirektori Anda .htaccess?

TheDeadMedic
sumber