.htaccess menulis semula lima direktori terakhir sebagai nilai GET
P粉451614834
P粉451614834 2024-01-17 00:29:03
0
1
386

Saya mempunyai URL berikut:

https://sub.example.com/economy/billing/ payment-check/434/khipu/1000/CLP/1673526088/

Saya ingin menukar 5 direktori terakhir kepada nilai GET ​​untuk menggambarkan URL berikut:

https://sub.example.com/economy/billing/ payment-check/?id=434&gateway=khipu&amt=1000&curr=CLP&ts_ttPageLoad=1673526088

Saya mempunyai talian .htaccess berikut:

RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/ index.php?id=&gateway=&amt=&curr=&ts_ttPageLoad= [QSA,L]

Di https://htaccess.madewithlove.com/ saya mendapat hasil penulisan semula berikut:

https://sub.example.com/index.php?id=economy/billing/ payment-check/434&gateway=khipu&amt=1000&curr=CLP&ts_ttPageLoad=1673526088

Apa salah saya? Terima kasih!

Edit: .htaccess terletak di https://sub.example.com/economy/billing/payment-check/

P粉451614834
P粉451614834

membalas semua(1)
P粉384679266

Pengkuantiti Ungkapan Biasa * 默认情况下是贪婪,因此会消耗尽可能多的内容,然后根据需要回溯。这就是为什么 包含 economy/billing/ payment-check/434 (即尽可能满足正则表达式)。尽管如此,这是假设 .htaccess Fail terletak dalam akar dokumen (inilah yang diandaikan oleh Penguji MWL).

Jika anda hanya mahu memadankan segmen laluan tunggal, kecualikan garis miring daripada menangkap subcorak, mis. ([^/]+).

Selain itu, berdasarkan sifat peraturan anda, saya mengandaikan fail .htaccess 文件位于 /economy/billing/ payment-check/ 子目录中(而不是根)? “MWL tester”工具假定 .htaccess 文件位于文档根目录中(并且无法更改)。事实上,如果 .htaccess ini berada dalam subdirektori, yang akan "berfungsi" pada pelayan anda, walau bagaimanapun, ini tidak optimum kerana ia masih boleh dilakukan memandangkan perubahan URL padanan terlalu banyak struktur.

Jika .htaccess 文件位于 /economy/billing/ payment-check/.htaccess, maka gunakan yang berikut:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ index.php?id=&gateway=&amt=&curr=&ts_ttPageLoad= [QSA,L]

Ekspresi biasa [^/]+ Memadankan apa sahaja kecuali garisan.

Walau bagaimanapun, jika peraturan berada dalam fail root .htaccess (seperti yang dijangkakan oleh penguji MWL), peraturan tersebut perlu kelihatan seperti ini:

RewriteRule ^(economy/billing/payment-check)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /index.php?id=&gateway=&amt=&curr=&ts_ttPageLoad= [QSA,L]

Perhatikan bahawa subcorak pertama yang ditangkap kini ialah laluan URL, yang diulang dalam rentetan penggantian (argumen kedua). Ini hanya mengelakkan pengulangan laluan URL secara manual dalam parameter kedua.

URL anda nampaknya memerlukan jenis data tertentu dalam segmen laluan. Contohnya, "argumen" pertama, ketiga dan kelima kelihatan seperti nombor sahaja. Jika ini berlaku, maka anda harus khusus dan hanya sepadan dengan nombor. Begitu juga, "param" keempat ialah huruf besar dan yang kedua ialah huruf kecil. Jadi, khususnya, ia boleh ditulis semula seperti ini (menggunakan fail .htaccess dalam subdirektori):

RewriteRule ^(\d+)/([a-z]+)/(\d+)/([A-Z]+)/(\d+)/$ index.php?id=&gateway=&amt=&curr=&ts_ttPageLoad= [QSA,L]

Ia hanya akan sepadan dengan URL format yang anda jangkakan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!