การแปลง URL โดยใช้ Mod_Rewrite

เริ่มโดย tosakp, 11 ธันวาคม 2006, 17:57:59

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

UnzO

มีปัญหานิดหน่อยครับ คือ เมื่อเรา rewrite ใหม่แล้ว พวกรูปทั้งหลายที่เราใส่ไว้ว่า "img/pic01.jpg" มันจะไม่ออก ทำให้เราต้องเปลี่ยน url ของรูปใหม่ทั้งหมดใน src ไฟล์ ซึ่งหากเป้นเว็บใหญ่ๆ ก็จะเวลาพอสมควร (จิงๆ แล้วมันใช้ Find Replace ได้ แต่เราก็ต้องตรวจด้วยตาอีกเพื่อความแน่นอน)
จึงอยากจะสอบถามว่า มันพอมีทางแก้ในการเขียนรึป่าวครับ ผมแค่สงสัยหน่ะครับ ว่าเราต้องแก้แบบนี้ทุกครั้งรึป่าวครับ

ส่วนอีกข้อคือ ระหว่าง http://www.domain.com/magician/Criss%20Angle/7/ และ http://localhost/magician/Criss-Angle/7/  อันไหนจะมีดีหรือผมเสียกันแค่ไหน หรือไม่มีผล ครับ
และเราสามารถแก้ในการ rewrite ได้รึป่าวครับ ว่าถ้าเจอ ช่องว่างให้เปลี่ยนเป้น - หรือเราต้องใช้ php เขียน

ขอบคุณครับ อาจถามเยอะไปหน่อยนะ แหะๆ

EThaiZone

ต้องทำใน php ครับ มีหลายวิธี
อันนี้แล้วแต่บุคคลครับ

ส่วนเรื่องปัญหาการอ้างถึงรูป
แก้ได้ด้วยการเรียกแบบ full url ครับ
ทำกับทุกรูปเลย
และความจริงอยากให้ดี ทำ full url กับลิงค์ภายในก็ดีครับ
จะช่วยให้ search engine เข้าใจง่ายขึ้นครับ

อาจจะมีผลกับเรื่องอินเด็กด้วยน้า  :wink:

UnzO

ขอบคุณครับ ว่าแต่ท่าน EthaiZone เนี้ย มีเมลล์ผมด้วยนี้นา ไม่ยักรู้ว่าอยู่บอร์ดนี้ด้วย (แบบว่าไม่ค่อยได้เข้ามาหาความรู้เท่าไหร่ ช่วงนี้เซ้งเซ็ง คนรักจากไป :cry: )

ปล. ในเมลล์ท่านมี UnzO Corporation ป่ะครับ  :?:

hurahura

ขอจะถามหน่อยครับว่าเราจะรู้ได้ยังไงว่า Host มันใช้ได้หรือเปล่า
ผลลงโทรไปถาม คุยกันตั้งนานกว่าจะรู้เรื่อง เพราะไม่รู้ว่าจะเรียกมันว่าอะไร
เรียกว่า Mod_Rewrite ไม่เห็นเขารู้จักเลย ต้องนั่งอธิบาย
สุดท้ายเขาให้เข้าไปดูที่ phpinfo ที่ตรง url_rewriter.tags
ซึ่งผมก็ไม่รู้ว่ามันคืออย่างเดียวกันหรือเปล่า
นี่ดีนะลองถามจากเว็บ host ของไทย ถ้าของฝรั่งจะคุยยังไงเนี่ย

จึงอยากทราบครับว่ามีวิธีดูตรงไหน ว่าโฮสนั่นๆ สามารถใช้ได้
มันจะใช้ได้เฉพาะลีนุกหรือเปล่า หรือไม่เกี่ยวกัน
หรือถ้าต้องโทรถามจริงๆ จะถามว่าอย่างไรให้เข้าใจตรงกัน

ขอบคุณครับ

kingmaster

อ้างถึงจาก: hurahuraขอจะถามหน่อยครับว่าเราจะรู้ได้ยังไงว่า Host มันใช้ได้หรือเปล่า
ผลลงโทรไปถาม คุยกันตั้งนานกว่าจะรู้เรื่อง เพราะไม่รู้ว่าจะเรียกมันว่าอะไร
เรียกว่า Mod_Rewrite ไม่เห็นเขารู้จักเลย ต้องนั่งอธิบาย
สุดท้ายเขาให้เข้าไปดูที่ phpinfo ที่ตรง url_rewriter.tags
ซึ่งผมก็ไม่รู้ว่ามันคืออย่างเดียวกันหรือเปล่า
นี่ดีนะลองถามจากเว็บ host ของไทย ถ้าของฝรั่งจะคุยยังไงเนี่ย

จึงอยากทราบครับว่ามีวิธีดูตรงไหน ว่าโฮสนั่นๆ สามารถใช้ได้
มันจะใช้ได้เฉพาะลีนุกหรือเปล่า หรือไม่เกี่ยวกัน
หรือถ้าต้องโทรถามจริงๆ จะถามว่าอย่างไรให้เข้าใจตรงกัน

ขอบคุณครับ

ถ้าเป็น apache ใช้ได้ชัวน์ครับ แต่เค้าต้องเปิดใช้งาน mod_rewrite ในไฟล์ httpd.conf ก่อนครับ

บอกให้เค้าหาบรรทัดนี้
#LoadModule rewrite_module modules/mod_rewrite.so
แล้วเอาเครื่องหมาย # ด้านหน้าออก save แล้ว restart apache แค่นี้ก็ใช้ได้ละครับ

ColdMoney

ขอบคุณมากครับ เดี๋ยวจะกลับมาอ่านให้จบ  :P  :P
[direct=https://www.jumnong.com]รับจำนอง[/direct] [direct=https://burapasup.com]รับซื้อบ้าน[/direct] [direct=https://kadsan.com]สินค้าราคาถูก[/direct] [direct=https://checkcheap.com]เปรียบเทียบราคา[/direct]

akibara

rewriteCond %{REQUEST_URI} !/$
rewriteCond %{REQUEST_URI} !\.
rewriteRule ^(.+)/(.+)$ index.php?category=$1&sub=$2
rewriteRule ^(.+)/(.+)/$ index.php?category=$1&sub=$2


ไม่ทราบว่าผิดยังไงเหรอครับ คือมันขึ้นแต่ $2 ส่วน $1 ว่าง
คือผมจะแปลงเป็นงี้อะคับ สมมุติ
/blog/diary
ให้มาเอา blog มาเป็น $1
ส่วน diary มาเป็น $2 อย่างงี้อะคับ

เพราะถ้าทำแบบนี้ มันจะเอามาเฉพาะ diary ส่วน blog จะไม่ถูกดึงมาด้วย

ขอบคุณมากฮะ
ttp://www.siamthink.com
Downloads Center !! Beta Version !!

http://www.upimages.us
Free Files Upload

aomnaruk

แล้วถ้า URL หลัง REwrite มีเครื่องหมาย "+" จะพิมพ์คำสั่งยังไงครับ

Tee++;

อ้างถึงจาก: aomnarukแล้วถ้า URL หลัง REwrite มีเครื่องหมาย "+" จะพิมพ์คำสั่งยังไงครับ

\+
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


EThaiZone

อ้างถึงจาก: UnzOขอบคุณครับ ว่าแต่ท่าน EthaiZone เนี้ย มีเมลล์ผมด้วยนี้นา ไม่ยักรู้ว่าอยู่บอร์ดนี้ด้วย (แบบว่าไม่ค่อยได้เข้ามาหาความรู้เท่าไหร่ ช่วงนี้เซ้งเซ็ง คนรักจากไป :cry: )

ปล. ในเมลล์ท่านมี UnzO Corporation ป่ะครับ  :?:

มีครับๆ

ผมก็เพิ่งรู้ว่าทั่นอยู่ในบอร์ดด้วยเหมือนกัน  :lol:

สำหรับท่านๆ ที่ไม่เข้าใจเรื่อง rewrite
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

hurahura

ต้งอไป set อะไรก่อนหรือเปล่าครับ ถึงจะใช้ได้
ทำไมทำแล้วไม่เห็นเกิดอะไรขึ้นเลย

ใช้ hostmonster

joe

ขอขุดหน่อยครับ ไม่รู้ว่า .htaccess มันจะช่วยได้ป่าว

คือสมมติผมมีข้อมูลเก็บอยู่ที่ subdirectory ของ root อะครับ ประมาณแบบนี้
อ้างถึง/home/userid/public_html/joeimages/1/header.gif
/home/userid/public_html/joeimages/1/bg.gif
/home/userid/public_html/joeimages/1/border.gif
/home/userid/public_html/joeimages/1/footer.gif

/home/userid/public_html/joeimages/2/header.gif
/home/userid/public_html/joeimages/2/bg.gif
/home/userid/public_html/joeimages/2/border.gif
/home/userid/public_html/joeimages/2/footer.gif

/home/userid/public_html/joeimages/3/header.gif
/home/userid/public_html/joeimages/3/bg.gif
/home/userid/public_html/joeimages/3/border.gif
/home/userid/public_html/joeimages/3/footer.gif

ถ้ามีการเรียก url hxxp://www.addondomain.com/joeimages/1/bg.gif
แล้วผมต้องการให้มันไปดึงข้อมูลมาจาก path ตามด้านบนอะครับ

คือตอนนี้ผมเขียนให้มันเรียกได้แล้ว แบบนี้
อ้างถึงOptions +FollowSymLinks
RewriteEngine on
RewriteRule ^joeimages/([0-9]+)/(.*)$ hxxp://www.maindomain.com/joeimages/$1/$2

แต่มันมีปัญหาตรงที่ว่า ผมเข้าไปเช็คดูในโฮส ปรากฎว่ามันเปลือง bandwidth มากเลยครับ
เพราะมันเหมือนเรียก ผ่าน browser ทุกครั้งเลย
ผมเลยอยากเปลี่ยนให้มันเรียกผ่าน path ตรงๆ เลยจะเขียนยังไงครับ

เลยลองเปลี่ยนเป็นแบบนี้ แต่ลองแล้วมันเรียกไม่ได้อะครับ
อ้างถึงOptions +FollowSymLinks
RewriteEngine on
RewriteRule ^joeimages/([0-9]+)/(.*)$ /home/userid/public_html/joeimages/$1/$2


คำถามครับ
.htaccess มันเขียนให้ไปดึงข้อมูลจาก path ที่ต้องการมาตรงๆเลยได้มั้ยครับ ??


คือผมไม่อยากสร้าง directory จริงๆให้กับ addondomain อะครับ
ข้อมูลมันเยอะ เวลามีการแก้ไขทีต้อง copy แก้กันนานเลย
:-*

ttk

#32
ผมลอง แบบง่ายที่สุดอ่ะครับ คือสร้างไฟล์ไว้สองตัว a.html กับ b.html แล้วเขียนใน  .htaccess ยังงี้อ่ะครับ
RewriteEngine on
RewriteRule ^a\.html$ b.html
แล้ววางไฟล์ .htaccess ไว้ใน folder เดียวกันกับไฟล์ทั้งสองตัว
จากนั้น พอลองเข้าไปที่ a.html มันขึ้น error ว่ายังงี้น่ะครับ

Server error!
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.

If you think this is a server error, please contact the webmaster.

Error 500

EThaiZone

ตอบคุณ hurahura

ลองติดต่อซัพพอร์ทดูครับ ผมเองก็ไม่เคยใช้ hostmonster ครับ




ตอบคุณ Joe

ใช้แบบนี้แทนครับ

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^joeimages/([0-9]+)/(.*)$ joeimages/$1/$2

แต่ผมก็ไม่เข้าใจว่าจะรีไรท์ไปทำไม  :P

ส่วนที่ถามว่าดึงโดยตรงได้ไหม ได้ครับ




ตอบคุณ  ttk
เข้าใจว่ามันหาไฟล์ b.html ไม่เจอ ไม่ก็เป็นที่เซอเวอร์
ลองติดต่อซัพพอร์ทให้ช่วยดูก็ได้ครับ เพราะขึ้นอยู่กับตำแหน่งโฟลเดอร์ด้วย (ในบางที)


joe

คุณ ethaizone คงเข้าใจผิดอะครับ

/home/userid/public_html/joeimages/1/header.gif

ตรงนี้มันอยู่ในส่วนของ main-domain นะครับ
เพราะฉะนั้น path url จริงๆ ของมันก็จะเป็น http://www.main-domain.com/joeimages/1/header.gif

แต่ที่ผมต้องการคือเรียกผ่าน addon-domain
http://www.addon-domain.com/joeimages/1/header.gif


โดยที่ folder ของ addon-domain นั้นมันไม่มี directory joeimages อยู่จริงๆ
จะให้มันไปดึงจาก /home/userid/public_html/joeimages/1/header.gif

ว่าง่ายๆก็คือ ผมจะให้ folder joeimages ร่วมกันทั้งหมด ทุกๆโดเมนในโฮสนะครับ


แต่ตอนนี้ไม่ได้ใช้แระ เวบปั่นโดนแบน สมัครใหม่ยังไม่ผ่านเลย  :P

Dr.K

ให้ server หลัก มี
Alias เป็นชื่อserver รองสิครับ
[direct=https://www.thaihealth.net/blog/seo_doctor/]seo blog[/direct]|[direct=https://netplushost.com]netplushost[/direct]
[direct=https://pattayawebmarketing.com/pattaya-seo]pattaya seo[/direct]
[direct=https://dochost.net]seo hosting[/direct]

EThaiZone

อ้างถึงจาก: joe ใน 05 พฤศจิกายน 2007, 20:00:04
คุณ ethaizone คงเข้าใจผิดอะครับ

/home/userid/public_html/joeimages/1/header.gif

ตรงนี้มันอยู่ในส่วนของ main-domain นะครับ
เพราะฉะนั้น path url จริงๆ ของมันก็จะเป็น http://www.main-domain.com/joeimages/1/header.gif

แต่ที่ผมต้องการคือเรียกผ่าน addon-domain
http://www.addon-domain.com/joeimages/1/header.gif


โดยที่ folder ของ addon-domain นั้นมันไม่มี directory joeimages อยู่จริงๆ
จะให้มันไปดึงจาก /home/userid/public_html/joeimages/1/header.gif

ว่าง่ายๆก็คือ ผมจะให้ folder joeimages ร่วมกันทั้งหมด ทุกๆโดเมนในโฮสนะครับ


แต่ตอนนี้ไม่ได้ใช้แระ เวบปั่นโดนแบน สมัครใหม่ยังไม่ผ่านเลย  :P

อ้อครับ คงเป็น hostgator งั้นก็

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^joeimages/([0-9]+)/(.*)$ ../joeimages/$1/$2


tosakp

20/12/2007:
ไม่ได้ Update นาน วันนี้ไปเจอข้อมูลเว็บภาษาไทย เห็นว่ามีประโยชน์ครับ
http://www.phpconcept.com/node/8

เกี่ยวกับ regexp ซึ่งต้องใช้บ้างในการทำ URL Rewrite

thaidesigner

 :P ขอบคุณมาก กำลังมึนเลย บอรืดตัวเองเจ๊ง เพราะไปลงตัวนี้ครับ [url]http://www.phpbb-seo.com/boards/simple-seo-url-vf60/[/url] แต่มันดันไม่สมบูรณ์อ่ะครับ  :-X
แถมตีมที่ใช้ดันไม่มีซับพอร์ทอีก  :P
DESIGN FORUM
มือใหม่ไทยดีไซน์เนอร์