Cegah direktori admin mengalihkan menggunakan aturan penulisan ulang url
Pengaturan di bawah ini bekerja dengan sangat baik tetapi jika saya mencoba untuk pergi ke https://example.com/quotes/wp-admin
itu mengarahkan saya ke hal https://example.com/wp-admin
yang tidak saya inginkan terjadi karena sekarang saya tidak pernah bisa masuk ke /quotes/
situs WordPress.
Saya mencoba menambahkan ini ke kutipan .htaccess
tetapi tidak membantu:
RewriteCond %{REQUEST_URI} !^/(wp-admin/.*)$
Saya juga mencoba menambahkan baris berikut ke .htaccess
file di wp-admin
folder tetapi juga tidak berhasil.
RewriteEngine Off
.htaccess
File root :
# Rewrite any URLs that contain a language code prefix to the subdirectory
RewriteRule ^[a-z]{2}/ quotes%{REQUEST_URI} [L]
# Rewrite any request for a static resource that does not exist (in the root)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(css|js|png|jpg|webp|gif|svg|ttf|woff2)$ quotes%{REQUEST_URI} [L]
# BEGIN rlrssslReallySimpleSSL rsssl_version[3.3.5]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
/quotes
.htaccess
mengajukan
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for static resources
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|webp|gif|svg|ttf|woff)$ RewriteRule (.*) /$1 [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /quotes/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /quotes/index.php [L]
</IfModule>
# END WordPress
Jawaban
Saya mencoba menambahkan ini ke kutipan
.htaccess
tetapi tidak membantu:RewriteCond %{REQUEST_URI} !^/(wp-admin/.*)$
The REQUEST_URI
variabel server berisi penuh URL-jalan, jadi ini harus /quotes/wp-admin
(yaitu regex. !^/quotes/wp-admin
- membuntuti slash sengaja dihilangkan). Akibatnya, pengecualian di atas akan gagal dan pengalihan akan tetap terjadi.
Anda juga dapat menambahkan .php
ke daftar ekstensi yang harus dihindari. Atau bahkan mengecualikan permintaan apa pun yang sepertinya memiliki ekstensi file - dengan asumsi URL halaman Anda tidak memiliki "ekstensi file".
Misalnya, di /quotes/.htaccess
:
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for wp-admin and static resources
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !^/quotes/wp-admin
RewriteCond %{REQUEST_URI} !\.\w{2,4}$ RewriteRule (.*) /$1 [R=302,L]
\.\w{2,4}$
- ini mengasumsikan bahwa ekstensi file terdiri dari sebuah titik diikuti oleh antara 2 dan 4 karakter dalam kisaran a-z
, A-Z
, 0-9
atau _
(garis bawah) dan akhir URL-jalan. \w
adalah kelas karakter singkatan yang mewakili rentang karakter tersebut.
Anda juga dapat mengambil langkah lebih jauh dan mencegah permintaan apa pun yang memetakan ke file fisik sedang diarahkan, meskipun pengecualian di atas untuk !^/quotes/wp-admin/
dan !\.\w{2,4}$
seharusnya sudah menangkap semuanya . Sebagai contoh:
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for wp-admin, static resources and any other files
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_URI} !^/quotes/wp-admin RewriteCond %{REQUEST_URI} !\.\w{2,4}$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /$1 [R=302,L]
Pemeriksaan sistem file (seperti -f
) relatif "mahal", jadi sebaiknya dihindari jika tidak benar-benar diperlukan.
Saya juga mencoba menambahkan baris berikut ke file .htaccess di folder wp-admin tetapi juga tidak berhasil.
RewriteEngine Off
Ini seharusnya berhasil - setidaknya mencegah pengalihan yang dipicu oleh .htaccess
. (Meskipun ini akan mencegah penulisan ulang juga, jadi mungkin tidak diinginkan?)
Namun, karena ini adalah pengalihan 301 (permanen), ini akan di-cache (secara persisten) oleh browser. Jadi, Anda perlu memastikan cache browser dibersihkan sebelum pengujian.
Uji dengan 302 pengalihan (sementara) hingga semuanya berfungsi sebagaimana mestinya untuk menghindari kemungkinan masalah cache.
Selain: Di .htaccess
file root Anda :
# Rewrite any request for a static resource that does not exist (in the root) RewriteCond %{REQUEST_FILENAME} !-f RewriteRule \.(css|js|png|jpg|webp|gif|svg|ttf|woff2)$ quotes%{REQUEST_URI} [L]
Poin kecil, tetapi Anda direferensikan di woff2
sini, tetapi woff
di /quotes/.htaccess
file Anda . Idealnya, keduanya harus sama. Anda bisa menggeneralisasi ini, seperti yang disebutkan di atas untuk /quotes/.htaccess
file. Sebagai contoh:
# Rewrite any request for a static resource that does not exist (in the root)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.\w{2,4}$ quotes%{REQUEST_URI} [L]