Sekarang saya punya konfigurasi ini:
location ~ ^/phpmyadmin/(.*)$
{
alias /home/phpmyadmin/$1;
}
Namun, jika saya mengunjungi www.mysite.com/phpmyadmin
(perhatikan kurangnya garis miring), itu tidak akan menemukan apa yang saya cari 404. Saya berasumsi karena saya tidak memasukkan garis miring. Bagaimana saya bisa memperbaikinya?
Jawaban:
Mungkin dalam ekspresi reguler yang Anda gunakan -
Di atas akan cocok dengan / phpmyadmin /, / phpmyadmin / anything / else / di sini, tetapi tidak akan cocok dengan / phpmyadmin karena ekspresi reguler termasuk garis miring.
Anda mungkin menginginkan sesuatu seperti ini:
Tanda tanya adalah pengukur ekspresi reguler dan harus memberi tahu nginx agar cocok dengan nol atau salah satu karakter sebelumnya (garis miring).
sumber
Solusi yang lebih baik:
Pastikan server memiliki izin
/home/phpmyadmin
terlebih dahulu.Penjelasan perbedaan dengan jawaban yang diterima:
Ini semua tentang ekspresi reguler .
Pertama-tama,
^
char berarti Anda ingin mencocokkan dari awal string dan bukan di suatu tempat di tengah. Tanda$
pada akhirnya berarti cocok dengan ujung tali.The
(?:)
berarti non-menangkap kelompok - kita tidak ingin hal itu dalam hasil menangkap, tapi kami ingin kelompok sederhana beberapa karakter. Kami mengelompokkannya seperti ini, karena kami ingin/
char menjadi bagian yang tidak signifikan dari jalur anak, dan bukan bagian yang signifikan dari jalur induk.sumber
Kenapa tidak Anda gunakan saja
?
sumber
alias
arahan?/phpmyadminblahblahblahblah
atau kombinasi lainnyaSaya tahu ini adalah pertanyaan lama, tetapi bagi siapa pun yang berakhir di sini melalui Google, saya menyelesaikannya dengan cara berikut (variasi dari @ kbec, yang cukup bagus):
Ini akan menangkap variasi apa pun
/foo
dan mengarahkannya ke/bar
url lain (termasuk parameter). Saya menunjukkannya denganproxy_pass
arahan tetapi itu juga akan berhasilalias
./foo
->/bar
/foo/
->/bar/
/foo/sub
->/bar/sub
/foo/sub1/sub2/?param=value
->/bar/sub1/sub2/?param=value
Ini berfungsi karena
$1
secara opsional akan menangkap sub-sumber daya plus garis miring terkemuka, sehingga tidak akan menangkap hal-hal seperti/fooextra/
. Ini juga akan mengarahkan slash akhir yang sekarang atau yang tidak hadir dengan benar.sumber
Pengalihan ini hanya akan menulis ulang URL dengan dan tanpa garis miring. Apa pun yang datang setelah slash tidak akan ditimpa.
domain.com/location => dialihkan ke domain.com/new/location
domain.com/location => dialihkan ke domain.com/new/location
domain.com/location/other => tidak dialihkan
sumber
Sudahkah Anda mencoba menggunakan
try_files
arahan?sumber
Saya melakukannya seperti itu
sumber
Mengapa tidak menempatkan dua penulisan ulang secara sederhana:
sumber