Score:0

Htaccess เพื่อเขียน URL ใหม่ด้วยพารามิเตอร์สองตัว

ธง cn

ฉันต้องการเขียน URL ประเภทนี้ใหม่

https://mywebsite.com/content/page.html?id=12&title=my-page-title

ถึง

https://mywebsite.com/12/my-page-title.html

ใช้generit.net/mod-rewrite/ ฉันได้รับกฎต่อไปนี้:

RewriteEngine เปิดอยู่
RewriteRule ^([^/]*)/([^/]*)\.html$ /content/page.html?id=$1&title=$2 [L]

แต่เมื่อทดสอบบน htaccess.madewithlove.com/ ฉันได้รับสิ่งนี้:

URL ใหม่คือ https://mywebsite.com/content/page.html?id=content&title=page
cat15ets avatar
cn flag
นั่นคือกฎที่กำหนดโดยตัวสร้างกฎการเขียนซ้ำ ฉันได้ลองใช้กฎต่าง ๆ โดยไม่มีผลลัพธ์ ฉันพยายามทำความเข้าใจว่ากฎการเขียนซ้ำทำงานอย่างไร แต่ไม่พบบทแนะนำที่เป็นประโยชน์สำหรับฉันเลยดูเหมือนว่าพวกเขาทั้งหมดจะพลาดประเด็นสำคัญในการอธิบายวิธีการทำงาน หรือเป็นเพียงปัญหาเกี่ยวกับตรรกะของฉัน...
Tilman Schmidt avatar
bd flag
(a) ฉันดูที่ไซต์ตัวสร้างที่คุณตั้งชื่อ คุณตีความสิ่งที่เสนอให้ทำผิด เมื่อมีข้อความว่า "เปลี่ยน URL แบบไดนามิกเป็น URL แบบคงที่ที่เป็นมิตรต่อเครื่องมือค้นหา" หมายความว่าจากมุมมองของผู้เยี่ยมชม (b) การทำงานของกฎการเขียนซ้ำนั้นง่ายๆ คือ พยายามจับคู่ URL ขาเข้ากับนิพจน์ทั่วไปที่กำหนดเป็นอาร์กิวเมนต์แรกให้กับคำสั่ง `RewriteRule` และถ้าเป็นเช่นนั้น ให้แทนที่ด้วยสตริงที่กำหนดเป็นอาร์กิวเมนต์ที่สอง
cat15ets avatar
cn flag
ฉันไม่เข้าใจที่คุณพูด ฉันทำผิด ไปที่: https://www.generateit.net/mod-rewrite/ ใส่ https://mywebsite.com/content/page.html?id=12&title=my-page-title ในฟิลด์ URL แล้วคลิก เขียนใหม่ URL
cat15ets avatar
cn flag
สามารถใช้ Mod Rewrite Generator เพื่อเปลี่ยน URL แบบไดนามิกให้เป็น URL แบบคงที่ที่เป็นมิตรกับเครื่องมือค้นหา โดยทั่วไปแล้ว Static URL จะอยู่ในอันดับที่ดีกว่าในเครื่องมือค้นหามากกว่า URL ไดนามิกที่ซับซ้อนและยาวซึ่งมีพารามิเตอร์จำนวนมาก พวกมันสร้างดัชนีได้ง่ายกว่าตั้งแต่แรก และยังเป็นมิตรกับผู้ใช้อีกด้วย โมดูล apache mod_rewrite แปลง URL ในรูปแบบหนึ่งเป็นรูปแบบอื่น และมีประโยชน์มากในการช่วยจัดทำดัชนีไซต์ที่มีเนื้อหาไดนามิก การใช้เครื่องมือนี้ทำให้คุณสามารถแปลง URL ไดนามิกแบบยาวเป็น URL แบบคงที่แบบสั้นได้
cat15ets avatar
cn flag
ไม่รู้ว่าไม่เข้าใจจากอะไร ฉันต้องการ **กฎ** ที่จะเปลี่ยน **URL ไดนามิกแบบยาว** เป็น **URLE แบบคงที่แบบสั้น**
Tilman Schmidt avatar
bd flag
กำหนดความหมายของคุณโดย 'เปลี่ยนเป็น'
cat15ets avatar
cn flag
จากเว็บไซต์: **การใช้เครื่องมือนี้คุณสามารถแปลง URL ไดนามิกแบบยาวเป็น URL แบบคงที่แบบสั้น **แปลงร่าง เขียนใหม่ เอาตามต้องการ ฉันอาจจะโง่เกินไปสำหรับสิ่งนี้ หรือมีอย่างอื่นที่เล่นอยู่ที่นี่ ...
Tilman Schmidt avatar
bd flag
ให้เรา [สนทนาต่อในแชท](https://chat.stackexchange.com/rooms/133536/discussion-between-tilman-schmidt-and-cat15ets)
Score:1
ธง bd

คำว่า "เขียนซ้ำ" หมายถึงกระบวนการที่มี ป้อนข้อมูล URL ที่ผู้เยี่ยมชมเว็บไซต์ของคุณร้องขอและเป็น URL เอาต์พุต URL ที่ส่งผ่านไปยัง CMS ของคุณเพื่อสร้างหน้าที่ร้องขอ

บริการที่ https://www.generateit.net/mod-rewrite/ สร้างกฎการเขียนซ้ำเพื่อให้หน้าของคุณสามารถเข้าถึงได้ผ่าน URL ของแบบฟอร์ม

https://mywebsite.com/12/my-page-title.html

แม้ว่าระบบพื้นฐานต้องการ URL ของแบบฟอร์มก็ตาม

https://mywebsite.com/content/page.html?id=12&title=my-page-title

มันทำอย่างนั้นโดย เขียนใหม่ เดอะ อดีต ไปที่ หลังซึ่งเป็นกฎการเขียนซ้ำที่ยกมาในคำถามของคุณ

ทดลองใช้บริการได้ที่ https://htaccess.madewithlove.com/คุณต้องป้อน

https://mywebsite.com/12/my-page-title.html

ในฟิลด์ที่มีข้อความว่า "กรอก URL ที่คุณใช้กฎ" ดูเหมือนว่าคุณป้อนการเขียนใหม่ ผลลัพธ์ ที่นั่นแทน

cat15ets avatar
cn flag
และต้องใช้กฎข้อใดใน htaccess เพื่อรับ **https://mywebsite.com/12/my-page-title.html** จาก **https://mywebsite.com/content/page.html?id =12&title=ชื่อหน้าของฉัน**
kz flag
@ cat15ets คุณไม่ทำแบบนั้นใน `.htaccess` คุณต้องเปลี่ยน URL ในซอร์ส HTML ด้วยตนเอง (หรือใน CMS) ให้เป็นรูปแบบ `example.com/12/my-page-title.html` อย่างไรก็ตาม คุณสามารถเลือก (ไม่บังคับ) ใช้การเปลี่ยนเส้นทางภายนอกเพื่อแปลงคำขอของบุคคลที่สามจาก `/content/page.html?id=12&title=my-page-title` เป็น Canonical URL ที่ต้องการ (เช่น `/12 /my-page-title.html`) - แต่ใช้สำหรับ SEO เท่านั้น หากคุณเปลี่ยนโครงสร้าง URL ที่มีอยู่ซึ่งได้รับการจัดทำดัชนี/ลิงก์ไปแล้ว สิ่งนี้ไม่จำเป็นสำหรับเว็บไซต์ของคุณในการทำงานกับ Canonical URL ที่ "สวยงาม" ที่ต้องการ
Score:0
ธง cn

ขอบคุณ RavinderSingh13 จาก StackOverflow ที่ช่วยฉันด้วยโค้ด

เพื่อเลี้ยว

https://mywebsite.com/pages/article.html?id=1&title=Title-Goes-Here

เข้าไปข้างใน

https://mywebsite.com/pages/article/1/Title-Goes-Here

ใช้

RewriteEngine เปิดอยู่
## การเปลี่ยนเส้นทางภายนอกในกฎของเบราว์เซอร์ที่นี่....
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} \s/([^/]*)/([^.]*)\.html\?id=([^&]*)&title=(\S+)\s [NC]
RewriteRule ^ /%1/%2/%3/%4? [R=301,L]

##เขียนกฎไฟล์ html ภายในใหม่ที่นี่....
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ $1/$2.html?id=$3&title=$4 [QSA ,NC,L]

นอกจากนี้ หลังจากองค์ประกอบส่วนหัว ฉันต้องใส่:

<base href="/" />

หากคุณมี atricle.html ในโฟลเดอร์หลัก ด้วย htaccess คุณสามารถใช้:

RewriteEngine เปิดอยู่
RewriteRule ^article/([0-9]+)/([0-9a-zA-Z_-]+)$ article.html?id=$1&title=$2 [NC,L] 

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา