Rumah > Soal Jawab > teks badan
P粉0225014952023-09-02 09:45:36
Ini tiada kaitan dengan versi PHP - peraturan anda jelas bercanggah...
Oleh kerana regex dalam peraturan pertama adalah terlalu umum (ia sepadan dengan /s/foo/
),如果您简单地添加第二条规则,那么第一条规则仍然会捕获所有请求并重写为 search.php?feq=foo&key=
tanpa mengira bilangan segmen laluan Anda perlu lebih spesifik dengan regex Contohnya, hanya padankan keseluruhan segmen laluan, bukan secara literal mana-mana :
RewriteRule ^s/([\w-]+)/([^/]*)$ search.php?feq=&key= [QSA,L] RewriteRule ^s/([\w-]+)/([^/]+)/([^/]*)$ search.php?feq=&city=&key= [QSA,L] RewriteRule ^s/([\w-]+)/([^/]+)/([^/]+)/([^/]*)$ search.php?feq=&pro=&city=&key= [QSA,L]
Sila ambil perhatian [^/]
(除 /
之外的任何内容)而不是 .
(任何内容)。还可以在强制路径段中使用 +
(1 atau lebih).
Seperti peraturan asal anda, key
parameter URL (iaitu segmen laluan kedua dalam peraturan pertama dan segmen laluan terakhir dalam peraturan berikutnya) adalah pilihan. Adakah ini disengajakan?
Jika anda tahu aksara yang dibenarkan dalam parameter URL ini, anda harus menunjukkan aksara ini dalam ungkapan biasa untuk mengehadkan lagi URL, jika tidak, ia akan ditulis semula (tidak betul).
Anda juga boleh membalikkan susunan arahan untuk menyelesaikan masalah yang dihadapi, tetapi ini hanyalah penyelesaian separa kerana regex anda masih terlalu generik.
Seperti yang dinyatakan di atas. Walau bagaimanapun, CSS dan kegagalan imej mungkin disebabkan oleh menggunakan laluan URL relatif untuk sumber ini dalam HTML sisi klien. Anda sedang menulis semula permintaan daripada kedalaman laluan yang berbeza, jadi anda mesti menggunakan URL relatif (atau mutlak) akar sumber statik. URL relatif diselesaikan secara semula jadi (oleh penyemak imbas) berbanding URL dalam bar alamat penyemak imbas.
(Sebagai penyelesaian, anda boleh melepasi laluan URL asas head
部分中设置 base
relatif dalam elemen untuk menunjukkan bahawa semua URL relatif adalah relatif, tetapi ini bukan tanpa kaveat.)
Bacaan lanjut mengenai aset yang hilang:
Juga ambil perhatian bahawa peraturan "Halaman Pendaratan" anda mesti datang selepas peraturan "Halaman Carian" anda jika tidak peraturan itu juga akan bercanggah. Sekali lagi, konflik ini boleh dielakkan dengan membuat ungkapan biasa lebih spesifik. Contohnya, dengan menukar segmen laluan pertama dalam "Halaman Pendaratan" (name
URL 参数的值)设置为 2 个或更多字符,而不是 1 个或更多字符,以避免与 / 冲突s/
(dalam "Carian").
Riwayat:
Ini mencetuskan ubah hala 302 (sementara) ke dokumen ralat 404 anda (yang menyembunyikan respons 404 dan URL yang sebenarnya mencetuskan 404). Ini biasanya tidak digalakkan melainkan anda mempunyai keperluan yang sangat khusus. Anda biasanya harus menggunakan laluan URL relatif akar di sini. Contohnya:
ErrorDocument 404 /baba/404.php
/baba/404.php
kemudiannya disampaikan melalui subpermintaan dalaman, dan dokumen ralat itu sendiri tidak didedahkan kepada pengguna akhir.
Jika anda menggunakan Ubah hala untuk menyelesaikan isu sumber yang hilang, lihat di atas tentang tidak menggunakan URL relatif dalam kod sumber HTML.