Untuk Apache:
'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
Anda juga dapat menggunakan HTTP_HOST
selain SERVER_NAME
sebagai komentar Herman. Lihat pertanyaan terkait ini untuk diskusi lengkap. Singkatnya, Anda mungkin baik-baik saja dengan menggunakan keduanya. Ini adalah versi 'host':
'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
Untuk Paranoid / Mengapa Penting
Biasanya, saya set ServerName
di VirtualHost
karena saya ingin yang menjadi kanonik bentuk website. The $_SERVER['HTTP_HOST']
diatur berdasarkan header permintaan. Jika server menanggapi salah satu / semua nama domain di alamat IP itu, pengguna dapat memalsukan tajuk, atau lebih buruk lagi, seseorang dapat mengarahkan catatan DNS ke alamat IP Anda, dan kemudian server / situs web Anda akan menyajikan situs web dengan dinamis tautan yang dibangun di atas URL yang salah. Jika Anda menggunakan metode terakhir, Anda juga harus mengonfigurasi vhost
atau menyiapkan .htaccess
aturan untuk menerapkan domain yang ingin Anda layani, seperti:
RewriteEngine On
RewriteCond %{HTTP_HOST} !(^stackoverflow.com*)$
RewriteRule (.*) https:
Semoga membantu. Inti sebenarnya dari jawaban ini hanyalah untuk memberikan baris kode pertama bagi orang-orang yang berakhir di sini ketika mencari cara untuk mendapatkan URL lengkap dengan apache :)