2010-12-14 29 views
9

Nói rằng tôi có các tập tin sau đây:URL/Subdomain ghi đè (.htaccess)

http://www.example.com/images/folder/image.jpg

Tôi muốn phục vụ nó trên

http://s1.example.com/folder/image.jpg

Làm thế nào tôi có thể làm một viết lại htaccess đến thời điểm nó với nó?

Giống như ví dụ, tôi tạo một subdomain s1.example.com và sau đó vào tên miền phụ đó, tôi thêm một quy tắc htaccess để chỉ bất kỳ tập tin, để kéo nó từ http://www.example.com/images/

Có phục vụ các file cách hành động này như phục vụ nội dung từ miền không có cookie?

Trả lời

18

Đầu tiên hãy để tôi nói một chút về khái niệm về miền không có cookie. Thông thường, khi yêu cầu bất cứ điều gì trên http, bất kỳ cookie có liên quan nào được gửi cùng với yêu cầu. Cookie, phụ thuộc vào tên miền của chúng. Ý tưởng sử dụng miền không có cookie là bạn di chuyển nội dung tĩnh không cookie, như hình ảnh, sang một miền riêng biệt để không cookie nào được gửi cùng với yêu cầu đó. Điều này cắt giảm một lượng nhỏ lưu lượng truy cập.

Số tiền bạn kiếm được từ việc này phụ thuộc vào loại trang. Bạn càng có nhiều hình ảnh, bạn càng có nhiều. Nếu trang web của bạn tải một loạt các hình ảnh nhỏ, chẳng hạn như hình đại diện hoặc hình thu nhỏ hình ảnh, bạn có thể có nhiều thứ để đạt được. Ngược lại, nếu trang web của bạn không sử dụng bất kỳ cookie nào, bạn không có gì để đạt được. Hoàn toàn có thể là trang của bạn sẽ không tải nhanh hơn đáng kể, nếu nó chỉ sử dụng một lượng nhỏ hình ảnh, sẽ được lưu vào bộ nhớ cache giữa các lần tải trang.

Một điều cần lưu ý là cookie được đặt cho example.com cũng sẽ được gửi cùng với yêu cầu tới s1.example.com là "s1." là tên miền phụ cho example.com. Bạn cần sử dụng www. (hoặc bất kỳ tên miền phụ nào khác mà bạn chọn) để tách các không gian cookie.

Thứ hai, nếu bạn quyết định rằng miền không cần thiết thực sự đáng để thử, hãy nói về triển khai.

Giải pháp của Shikhar là xấu! Trong khi các giải pháp xuất hiện để làm việc trên bề mặt, nó thực sự đánh bại mục đích của việc sử dụng một miền cookieless. Đối với mọi hình ảnh, trước tiên hãy thử địa chỉ s1.. URL s1. sau đó chuyển hướng đến miền www. kích hoạt yêu cầu http thứ hai. Đây là một mất mát, không có vấn đề làm thế nào bạn nhìn vào nó. Những gì bạn cần là một viết lại, thay đổi URL nội bộ trên máy chủ web mà không cần trình duyệt thực hiện.

Để đơn giản, tôi giả định rằng tất cả các tên miền trỏ đến cùng một thư mục, sao cho www.example.com/something = example.com/something = s1.example.com/something = blub.example.com/something. Điều này làm cho mọi việc đơn giản hơn nếu bạn thực sự cần lưu trữ hình ảnh về mặt vật lý trong "www.example.com/images".

tôi khuyên bạn nên một .htaccess trông một chút gì đó như thế này:

# Turn on rewrites 
RewriteEngine On 

# Rewrite all requests for images from s1, so they are fetched from the right place 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
# Prevent an endless loop from ever happening 
RewriteCond %{REQUEST_URI} !^/images 
RewriteRule (.+) /images/$1 [L] 

# Redirect http://s1.example.com/ to the main page (in case a user tries it) 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
RewriteRule ^$ http://www.example.com/ [R=301,L] 

# Redirect all requests with other subdomains, or without a subdomain to www. 
# Eg, blub.example.com/something -> www.example.com/something 
#  example.com/something  -> www.example.com/something 
RewriteCond %{HTTP_HOST} !^www\.example\.com 
RewriteCond %{HTTP_HOST} !^s1\.example\.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# Place any additional rewrites below. 
+0

+1 cho câu trả lời sâu sắc như vậy nitro2k01 !! Bạn vừa tiết kiệm cho tôi nhiều giờ làm lại bằng cách thuyết phục tôi độc thân để bỏ qua toàn bộ câu chuyện không có cookie. Trang web của tôi chỉ sử dụng 10 hình ảnh, điều đó không đáng giá khi chuyển hướng toàn bộ nội dung trên tên miền phụ. Trong khi về chủ đề này, bạn sẽ biết nếu trong điều khoản của seo-xếp hạng, nó tốt hơn để sử dụng yellowhorse.domain.com hoặc domain.com/yellowhorse? – Sam

1

Nếu bạn có ý nghĩa để chuyển hướng lưu lượng từ www.example.com để s1.example.com, sử dụng htaccess sau trên www.example.com

RewriteCond %{HTTP_HOST} ^(s1\.example\.com)
RewriteRule (.*) http://www.example.com%{REQUEST_URI}[R=301,NC,L]

Nếu đây không phải là những gì bạn đang tìm kiếm, hãy giải thích thêm câu hỏi.

1

Chỉ cần để biết chung của mọi người ai thích tôi tiến hành khảo sát các lợi ích của việc này. Từ những gì tôi đọc nó không chỉ là cắt giảm chi phí đầu vào của việc loại bỏ các cookie được gửi với các yêu cầu http. Rõ ràng nhiều trình duyệt giới hạn kết nối tối đa đến 1 tên miền/máy chủ đến 6 đồng thời. Vì vậy, nếu bạn có một tên miền riêng biệt trên một máy chủ khác nhau, bạn sẽ tăng gấp đôi đến 12. Điều đó đối với tôi dường như là tiềm năng chính ở đây để tăng tốc độ nghiêm trọng.

Mặc dù vậy, nếu tôi hiểu chính xác điều này. Miền khác phục vụ nội dung tĩnh cần được đặt trên một máy chủ khác từ miền chính. Trên thực tế có ý nghĩa, người dùng firefox avid và tweaker. Khi bạn kiểm tra cài đặt about: config trong firefox, các kết nối tối đa cho mỗi máy chủ được đặt thành 6 theo mặc định. Một người có thể tự tăng lên tối đa 8. Nhưng hầu hết người dùng firefox có thể không dành đủ thời gian làm quen với cách sửa đổi trình duyệt và để nó ở mức tối đa mặc định là 6.

Không chắc chắn bao nhiêu các trình duyệt khác được đặt theo mặc định và sau đó có các phiên bản trình duyệt cũ hơn vẫn được sử dụng để xem xét. Bottomline ... làm cho cảm giác hoàn hảo cho phép các trình duyệt để tăng gấp đôi tổng số kết nối bằng cách sử dụng hai máy chủ sẽ phải là một cải tiến thời gian tải. Sử dụng một tên miền phụ trên cùng một máy chủ, một người sẽ không thể tận dụng điều đó.

0

Tôi nghĩ rằng bạn có thể có nó ngược, (hoặc rất có thể tôi làm). Để làm rõ, nếu bạn đang triển khai miền phụ ít cookie hơn & có URL cơ sở là www. ít nhất trong trường hợp này, cookie được đặt trên www, ví dụ: trình đặt cookie chính là google analytics, vì vậy khi đặt tập lệnh trên trang web nó trông như thế này:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'analytics-acc-#], 
['_setDomainName', '[www.valpocreative.com][1]'], 
['_trackPageview']); 

Bạn có thể thấy ở đây tôi đặt tên miền chính của tôi để www, chính xác cho tôi nếu tôi sai trong trường hợp của tôi, tôi sẽ cần phải chuyển hướng www để phi www subdomain & không phải là khác xung quanh. Đây cũng là thiết lập cname được thực hiện trên số cpanel của tôi (cname= "cdn" trỏ đến www.domain.com)