Apache2 - การเปลี่ยนเส้นทางโดเมนย่อยไปยัง URL อื่น


15

ฉันมีสองโดเมนย่อยคือ a.website.com และ b.website.com ชี้ไปยังที่อยู่ IP เดียวกัน ฉันต้องการเปลี่ยนเส้นทาง b.website.com ไปยัง a.website.com:8080 ฉันมีสิ่งนี้ในไฟล์. htaccess ของฉัน ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

... แต่มันไม่ทำงาน

มีวิธีที่จะทำให้มันใช้งานได้หรือไม่?


ลองเพิ่มต่อไปนี้เพื่อ.htaccessในไดเรกทอรีหลักข้างต้นไดเรกทอรีที่น่าสนใจ: หรือRedirectMatch ^/foo/$ /foo/bar/ RedirectMatch ^/foo/$ /bar/baz/ยังเห็นวิธีการได้รับ apache2 เปลี่ยนเส้นทางไปยังไดเรกทอรีย่อย
jww

คำตอบ:


20

คุณสามารถใช้ VirtualHost แบบง่าย ๆ ได้ตลอดเวลา:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

หากคุณต้องการไปกับไฟล์. htaccess คุณจะหายไปจากเครื่องหมาย% บนเงื่อนไขการเขียนซ้ำ:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]

ฉันลองทั้งคู่แล้วก็ไม่ทำงาน ฉันเปิดใช้งาน mod_rewrite และฉันมี VirtualHost ในไฟล์ไซต์แยกต่างหาก มีอะไรที่ฉันขาดหายไปไหม
Technius

3
มันใช้งานได้ดี ฉันมีปัญหาการเปลี่ยนเส้นทางแบบวนเนื่องจากฉันกำลังชี้โดเมนย่อยไปยังโฟลเดอร์ย่อยและโฟลเดอร์ย่อยนั้นกำลังเปลี่ยนเส้นทาง ตอนนี้ฉันเปลี่ยนเส้นทางโดเมนย่อยไปยัง URL ที่สอดคล้องกับโฟลเดอร์และการเปลี่ยนเส้นทางครั้งที่ 2 ก็เกิดขึ้นจริง!
Paschalis

วิธีการทำ ot เพื่อรักษาhttp://หรือhttps://วิธีการใดb.website.comเข้าถึงได้ในสถานที่แรก?
Golar Ramblar

0

เมี่ยงคำตอบหลัก

ประเภทการเปลี่ยนเส้นทาง

คุณสามารถระบุประเภทของการเปลี่ยนเส้นทางที่คุณทำเป็นอย่างชัดเจน
ฉันขอแนะนำให้คุณใช้การเปลี่ยนเส้นทางชั่วคราว (302) ในขณะที่ทดสอบกฎการเปลี่ยนเส้นทาง

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

ระบุรูปแบบการจับคู่ไดเรกทอรี

คุณสามารถเปลี่ยนเส้นทางคำขอที่ตรงกับรูปแบบบางอย่างเท่านั้น

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.