2012-07-09 38 views
8

OK, tôi đã thực hiện một số lượng tìm kiếm hợp lý nhưng vẫn không thể tìm thấy điều gì đó đủ cụ thể để xử lý sự cố của tôi.chuyển hướng tất cả tên miền phụ ký tự đại diện đến miền gốc

Hiện tại, tôi có bản ghi DNS chuyển hướng tất cả tên miền phụ khác đến máy chủ của tôi. Những gì tôi hỏi là điều gì sẽ làm cho example.mydomain.com trả lại HTTP/1.1 301 và chuyển hướng đến chỉ mydomain.com

Tôi xin lỗi nếu điều này đã được đề cập, tôi không thể tìm thấy bất kỳ điều gì cụ thể đủ.

Trả lời

14

Sử dụng một RewriteCond để phù hợp với các lĩnh vực khác hơn mydomain.com và 301 redirect họ:

RewriteEngine On 
# If the domain (any domain) is not exactly mydomain.com... 
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC] 
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA] 

Bạn cũng có thể xem xét cụ thể hơn đối với các tên miền phụ của mydomain.com. Phần trên sẽ khớp với bất kỳ tên miền nào khác.

# Match only subdomains of mydomain.com 
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC] 
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA] 
+0

này chỉ hoạt động với www. lúc bắt đầu? – JorgeLuisBorges

+0

@JorgeLuisKhông chỉ là www. - nó cũng khớp với _any subdomain_ 'subdomain.mydomain.com' hoặc bất kỳ thứ gì khác ngoài' mydomain.com' chính xác. Ví dụ trên cũng sẽ chuyển hướng 'mydomain.org' sang' mydomain.com' trong khi dưới cùng chỉ khớp với tên miền phụ và sẽ chỉ chuyển hướng 'subdomain.mydomain.com' sang' mydomain.com' –

+0

'RewriteRule (. *) Http://example.com/$1 [L, R = 301, QSA] 'tạo ra các dấu gạch chéo, ví dụ: 'www.example.com' chuyển hướng đến' example.com // '. 'RewriteRule (. *) Http: //example.com$1 [L, R = 301, QSA]' có vẻ đúng. –

1

This article Covers .htacces và ModRewrite để chuyển hướng bất kỳ yêu cầu thực hiện để bất kỳ Domin khác hơn là một trong những chính chuyển hướng đến tên miền chính.

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

Theo evan's blog, bạn có thể cấu hình ServerAlias ​​của bạn với ký tự đại diện "*" nếu bạn thực hiện apache như phía máy chủ của bạn. Mọi lượt truy cập vào tên miền phụ sẽ được chuyển hướng hoặc định tuyến đến miền gốc trong trường hợp này.

<Virtualhost *:80> 
VirtualDocumentRoot "/path/to/your/workspace/%1/public" 
ServerName vhosts.dev 
ServerAlias *.dev 
UseCanonicalName Off 
<Directory "/path/to/your/workspace/*"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 
</Virtualhost> 
0

Trong trường hợp của tôi, tôi cần cai trị như foo.bar.com>bar.com/page/foo và tôi tìm thấy trong tài liệu hướng dẫn apache này:

RewriteCond %{HTTP_HOST} ^(.+)\.bar\.com$ [NC] 
RewriteCond %{HTTP_HOST} !www.bar.com$ [NC] 
RewriteRule ^(.*)$ http://bar.com/page/%1/$1 [L,R=301] 
Các vấn đề liên quan