ฉันจะบังคับให้ URL ของฉันเริ่มต้นด้วย www ได้อย่างไร


17

ฉันต้องการที่จะแน่ใจว่าผู้ใช้มาถึงแม้ว่าพวกเขาจะมาถึงผ่านนามแฝงwww.mydomain.com mydomain.comนี่คือเพื่อให้ฉันสามารถควบคุมคุกกี้ในโดเมนย่อยและเพื่อให้ Google เห็นหนึ่งโดเมนเดียวและไม่หลบ URL

ฉันจะทำสิ่งนี้ด้วย apache ได้อย่างไร


5
ฉันขอแนะนำให้คุณกลับรายการนี้และบังคับใช้ mydomain.com แทนได้หรือไม่ คำนำหน้า 'www' ซ้ำซ้อนและไม่จำเป็นทั้งหมด
Eevee

คุกกี้ถูกส่งไปยังโดเมนย่อยทั้งหมดใน mydomain.com ในขณะที่ฉันสามารถตัดสินใจเองว่าจะโหลดคุกกี้จากที่ใดด้วย www.mydomain.com .. ตัวอย่างเช่นฉันสามารถหลีกเลี่ยงการเพิ่มคุกกี้ใน static.mydomain.com ได้ ไม่ส่งสำหรับทุกภาพที่โหลด มันไม่จำเป็นอย่างแน่นอน
Magnar

คุณสามารถบอกให้ Google ใช้สไตล์การเชื่อมโยงเดียวโดยเฉพาะ ดูคำตอบของฉันด้านล่าง
Robinicks

ฉันไม่มีตัวแทน แต่การเพิ่มแท็กเหล่านี้จะเป็นประโยชน์: redirect redirectmatch mod_alias
Tom

1
แม้ว่าจะเป็นอย่างนี้ในภายหลัง แต่ก็ยังมีความเกี่ยวข้อง www ไม่คัดค้านเนื่องจากโดเมนที่ไม่มีโดเมนย่อยมีข้อเสียหลายประการ ดูyes-www.org/why-use-wwwด้วยเหตุผลหลายประการในการใช้ www
user50849

คำตอบ:


17
<VirtualHost ip:80>
   ServerName domain.com
   RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>

<VirtualHost ip:80>
   ServerName www.domain.com

   ... usual config
</VirtualHost>

7
สำหรับโซลูชันที่ง่ายกว่าเล็กน้อยคุณสามารถ: "เปลี่ยนเส้นทางถาวร / ptth: //www.domain.com/" และ apache จะเก็บคำต่อท้ายโดยอัตโนมัติ (ผมย้อนกลับ http ปิดการใช้งาน AutoLink ได้.)
เกร็ก Hewgill

1
จริงเหรอ น่ารักฉันไม่เคยรู้เลย ฉันคิดเสมอว่าคุณจะต้องใช้ RedirectMatch เพื่อรักษาส่วนต่อท้ายของ URI
Dave Cheney

4

เพิ่มลงในhttpd.confไฟล์ของคุณ:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

4

เปิดใช้งานการสนับสนุน mod_rewrite จากนั้นสร้างไฟล์. htaccess ในโฟลเดอร์รูทสำหรับโดเมนของคุณด้วยเนื้อหาต่อไปนี้:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^domain\.com$
   RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>

ไม่ลืมที่จะทำให้การทดสอบ RewriteCond กรณีตาย ...
Alnitak

ทำเช่นนี้ต่อเมื่อคุณไม่มีสิทธิ์เข้าถึงเพื่อเปลี่ยนแปลงไฟล์ apache config ด้วยเหตุผลบางประการ .htaccessไฟล์มีค่าใช้จ่ายจำนวนมากและการเขียนทับไฟล์เหล่านั้นทำให้แย่ลง
John Dalton

การใช้การเปลี่ยนเส้นทางจะดีกว่าการใช้ mod_rewrite สำหรับงานนี้
David Pashley

3

หากคุณต้องการให้ Google ใช้สไตล์โดเมนเฉพาะ (ไม่ว่าจะมีหรือไม่มีwww ) ให้สร้างบัญชีGoogle Webmaster Toolsฟรีให้ตรวจสอบความเป็นเจ้าของโดเมนของคุณ (อัปโหลดไฟล์) และตั้งค่าโดเมนที่คุณต้องการโดยใช้แผงควบคุมออนไลน์

มันง่ายมากและคุณไม่จำเป็นต้องเปลี่ยนรหัสฝั่งเซิร์ฟเวอร์ใด ๆ รวมถึงลิงค์ขาเข้าที่มีหรือไม่มีwwwจะได้รับการปฏิบัติเช่นเดียวกันกับการเพิ่ม PageRank ของหน้าเว็บของคุณ

ลิงก์อาจชี้ไปที่ไซต์ของคุณโดยใช้ทั้ง URL www และที่ไม่ใช่ www (ตัวอย่างเช่น http://www.example.comและ http://example.com ) โดเมนที่ต้องการคือรุ่นที่คุณต้องการใช้สำหรับเว็บไซต์ของคุณในการค้นหา ผล

เมื่อคุณแจ้งชื่อโดเมนที่ต้องการเราจะพิจารณาความชอบของคุณเมื่อแสดง URL อาจใช้เวลาสักครู่ก่อนที่คุณจะเห็นการเปลี่ยนแปลงนี้สะท้อนให้เห็นอย่างเต็มที่ในดัชนีของเรา

หากคุณไม่ได้ระบุโดเมนที่ต้องการเราอาจถือว่าโดเมน www และไม่ใช่ www เป็นข้อมูลอ้างอิงแยกต่างหากไปยังหน้าเว็บแยกต่างหาก


1

ฉันมีปัญหาตรงข้ามคนจะไปที่ www.domain.com เมื่อฉันต้องการให้บริการโดยตรงจาก domain.com:

<VirtualHost *:80>
   ServerName domain.com

   ... usual config
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias sub.domain.com # can also catch some other subdomains
   ServerAlias *.domain.com # or all previously unmatched domains

   Redirect permanent / http://domain.com/
</VirtualHost>

ตามที่ Greg Hewgill พูดไว้การใช้ Redirect นั้นง่ายกว่า RedirectMatch เล็กน้อยและทำงานเดียวกันดูที่http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectสำหรับรายละเอียดเพิ่มเติม

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