จะส่งพารามิเตอร์ GET ไปยัง URL ที่เขียนใหม่ได้อย่างไร


13

ฉันมี.htaccessกฎการเขียนซ้ำเช่นนี้:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q=$1

สิ่งนี้จะเป็นหากผู้เข้าชมคนhttp://example.com/search/testURI http://www.example.com/search.php?q=testที่ที่มีการประมวลผลจริงๆ

ตอนนี้ถ้าฉันพยายามส่งพารามิเตอร์สุ่ม GET พิเศษไปยัง URL ที่เขียนใหม่ของฉันพารามิเตอร์จะถูกละเว้น ดังนั้นถ้าฉันพยายามไปที่นี่:

http://www.example.com/search/whatever?extra=true

พารามิเตอร์extraจะถูกละเว้น ดูเหมือนจะไม่ผ่านเลย

สามารถแก้ไขปัญหานี้ได้หรือไม่? ถ้าเป็นเช่นนั้นได้อย่างไร

คำตอบ:


14

คุณกำลังมองหาQuery String Aธง ppend - เช่น

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q=$1 [QSA]

ดูmod_rewriteเอกสารประกอบสำหรับคำอธิบายแบบเต็มของการตั้งค่าสถานะ RewriteRule


ดีจัง! ฉันรู้ว่ามีบางอย่างเช่นนั้น ฉันเป็นคน.htaccessไม่มีอะไร
Jake Wilson

มีวิธีเพิ่ม QSA ให้กับกฎทั้งหมดหรือไม่
hakkikonu

สวัสดี @danlefree รู้ว่ามันเป็นคำถามเก่า แต่การใช้ Wamp เมื่อฉันทำสิ่งนี้สไตล์ชีทของฉันสคริปต์และอื่น ๆ ทั้งหมดจะสูญเสียการอ้างอิง ฉันจะแก้ปัญหาอย่างไร
DannyGM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.