Saya mencoba membatasi URL tertentu agar tersedia di luar jaringan hanya untuk alamat IP tertentu. Ketika pengguna di luar mencoba mengakses URL itu dan bukan dari daftar IP, ia harus diarahkan ke beranda.
Inilah yang saya coba sejauh ini tanpa hasil. Bagian terakhir ini mengarahkan semua orang ke beranda tanpa memandang IP.
<Location "/secret">
# <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
# Redirect 303 "/secret" /
# </If>
RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]
LogLevel debug rewrite:trace6
</Location>
PS: URL / rahasia sebenarnya adalah URL virtual dan tidak ada secara fisik di drive.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
sumber
sumber
RewriteEngine On
?Jawaban:
Gunakan
Order
,Deny
danallow
untuk menentukan siapa yang memiliki akses ke vhost atau lokasi Anda.Ketika datang untuk mengarahkan, pikirkan tentang halaman kesalahan khusus . Ini jauh lebih umum, karena setiap akses yang tidak sah harus memprovokasi kesalahan 403 dan dengan demikian dapat dievaluasi dengan mudah.
Saya tidak pernah melakukan ini dengan apache, tetapi gunakan strategie ini dengan nginx. Untuk apache, hal seperti ini harus dilakukan:
sumber
ErrorDocument
bagiannya dari 2.4 docs. Saya tidak menggunakan apache, karena nginx ada, tetapi mengasumsikan ituOrder
,Deny
danAllow
masih ada di apache 2.4Opsi Pesanan, Tolak, dan Bolehkan telah diganti di Apache 2.4 dengan
Anda dapat secara eksplisit membatasi alamat melalui penggunaan berikut ini:
Kebalikannya juga benar, untuk membatasi semua dan hanya mengizinkan sub-set gunakan yang berikut ini:
Informasi lebih lanjut tersedia di dokumentasi kontrol akses Apache 2.4.
Sehubungan dengan pertanyaan Anda (diedit sendiri karena kurangnya poin untuk menambahkan komentar,) Anda harus dapat dengan mudah menetapkan ErrorDocument dengan indeks ditetapkan sebagai jalur URL:
Semoga ini membantu!
sumber
allow
meskipun sudah usang,Require 127.0.0.1
masih memungkinkan akses dengan alamat eksternal dari mesin lokal, di mana sebagai memungkinkan sintaks hanya mengizinkan dari 127 alamat.Untuk Apache 2.4, Anda dapat menggunakan <RequireAny>. Anda dapat melakukannya di vhost atau file .htaccess ....
Apache docs https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
sumber