ฉันต้องการที่จะแน่ใจว่าผู้ใช้มาถึงแม้ว่าพวกเขาจะมาถึงผ่านนามแฝงwww.mydomain.com
mydomain.com
นี่คือเพื่อให้ฉันสามารถควบคุมคุกกี้ในโดเมนย่อยและเพื่อให้ Google เห็นหนึ่งโดเมนเดียวและไม่หลบ URL
ฉันจะทำสิ่งนี้ด้วย apache ได้อย่างไร
ฉันต้องการที่จะแน่ใจว่าผู้ใช้มาถึงแม้ว่าพวกเขาจะมาถึงผ่านนามแฝงwww.mydomain.com
mydomain.com
นี่คือเพื่อให้ฉันสามารถควบคุมคุกกี้ในโดเมนย่อยและเพื่อให้ Google เห็นหนึ่งโดเมนเดียวและไม่หลบ URL
ฉันจะทำสิ่งนี้ด้วย apache ได้อย่างไร
คำตอบ:
<VirtualHost ip:80>
ServerName domain.com
RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>
<VirtualHost ip:80>
ServerName www.domain.com
... usual config
</VirtualHost>
เพิ่มลงในhttpd.conf
ไฟล์ของคุณ:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
เปิดใช้งานการสนับสนุน 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>
.htaccess
ไฟล์มีค่าใช้จ่ายจำนวนมากและการเขียนทับไฟล์เหล่านั้นทำให้แย่ลง
หากคุณต้องการให้ Google ใช้สไตล์โดเมนเฉพาะ (ไม่ว่าจะมีหรือไม่มีwww ) ให้สร้างบัญชีGoogle Webmaster Toolsฟรีให้ตรวจสอบความเป็นเจ้าของโดเมนของคุณ (อัปโหลดไฟล์) และตั้งค่าโดเมนที่คุณต้องการโดยใช้แผงควบคุมออนไลน์
มันง่ายมากและคุณไม่จำเป็นต้องเปลี่ยนรหัสฝั่งเซิร์ฟเวอร์ใด ๆ รวมถึงลิงค์ขาเข้าที่มีหรือไม่มีwwwจะได้รับการปฏิบัติเช่นเดียวกันกับการเพิ่ม PageRank ของหน้าเว็บของคุณ
ลิงก์อาจชี้ไปที่ไซต์ของคุณโดยใช้ทั้ง URL www และที่ไม่ใช่ www (ตัวอย่างเช่น http://www.example.comและ http://example.com ) โดเมนที่ต้องการคือรุ่นที่คุณต้องการใช้สำหรับเว็บไซต์ของคุณในการค้นหา ผล
เมื่อคุณแจ้งชื่อโดเมนที่ต้องการเราจะพิจารณาความชอบของคุณเมื่อแสดง URL อาจใช้เวลาสักครู่ก่อนที่คุณจะเห็นการเปลี่ยนแปลงนี้สะท้อนให้เห็นอย่างเต็มที่ในดัชนีของเรา
หากคุณไม่ได้ระบุโดเมนที่ต้องการเราอาจถือว่าโดเมน www และไม่ใช่ www เป็นข้อมูลอ้างอิงแยกต่างหากไปยังหน้าเว็บแยกต่างหาก
ฉันมีปัญหาตรงข้ามคนจะไปที่ 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สำหรับรายละเอียดเพิ่มเติม