.htaccess Menulis Ulang Subdirektori Wordpress tanpa merusak subdirektori lain

Aug 20 2020

Jadi saya telah menginstal WordPress /wp/tetapi saya ingin semua URL WordPress ditulis ulang untuk muncul di direktori root. Saat ini saya memiliki ini berfungsi (lihat di bawah) tetapi saya ingin mengubah saya .htaccesssehingga tidak merusak subdirektori lainnya.

Misalnya, jika saya ingin mengunjungi www.example.com/images/image.png, saat ini mengalihkan saya ke halaman 404 di WordPress.

Apakah ini mungkin .htaccess?

Kode saat ini:

RewriteEngine on

#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/

# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]

Pembaruan : Menguji saran MrWhite dengan mode Penyamaran dan browser kedua. Tidak berpengaruh. .htaccessFile baru :

RewriteEngine on

#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/

# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]
# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f

Jawaban

MrWhite Aug 21 2020 at 01:54

Anda perlu menambahkan kondisi untuk mengecualikan file yang ada, jika tidak, permintaan /images/image.pngakan secara alami ditulis ulang /wp/images/image.pngdan memicu 404 di WordPress (kecuali jika /wp/images/image.pngmemang ada).

Misalnya, tambahkan kondisi berikut ke aturan Anda yang sudah ada:

# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f

UPDATE: ini sepertinya tidak berhasil. Masih membuka halaman 404 WordPress

Anda menempatkan RewriteCondperintah di tempat yang salah.

RewriteCondarahan bukanlah pernyataan yang sepenuhnya terpisah, itu adalah kondisi yang berlaku untuk RewriteRulearahan yang mengikuti. Sendiri, RewriteCondarahan tidak melakukan apa-apa.

The RewriteCondkebutuhan direktif untuk pergi (di mana saja) sebelum yang RewriteRuledirektif:

RewriteEngine on

#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/

# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.

# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]

Selain itu, lihat .htaccessfile "WordPress" di /wpsubdirektori untuk referensi. Itu melakukan hal yang sama.

Selain: Kecuali Anda memiliki beberapa domain atau subdomain yang tidak ingin Anda tulis ulang, maka Anda dapat menghapus pemeriksaan nama host (yaitu, RewriteCondperintah yang memeriksa HTTP_HOSTvariabel server).