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/
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: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: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):
Ia hanya akan sepadan dengan URL format yang anda jangkakan.