2010-10-20 10 views
6

Được rồi, điều này có thể đã được trả lời trước nhưng dường như cho đến bây giờ tôi vẫn chưa tìm thấy câu trả lời.Tên miền phụ động PHP

Bạn có thể nhận thấy có một số trang web có thể cho phép người dùng đăng ký ngay lập tức nhận tên miền phụ của riêng họ trong trang web.

Ví dụ: tên miền là www.domain.com. Nếu tôi đăng ký một người dùng mới là henson, tôi sẽ nhận được trang của riêng tôi trên trang web, ví dụ: www.henson.domain.com (không chắc chắn nếu phần www là cần thiết) Vì vậy, nếu người dùng mở www.henson.domain .com, nó sẽ thực sự mở www.domain.com?owner=henson

Tôi có thể làm điều này bằng cách sử dụng chỉ htaccess không? Bởi vì tôi đọc ở đâu đó rằng điều này cũng cần tạo thủ công các tên miền phụ trong cpanel (mà đánh bại mục đích của trang web).

Ồ, trang web được mã hóa bằng PHP phẳng, vì vậy không có khung MVC nào. NẾU ai đó biết làm thế nào để làm điều này một cách dễ dàng với các khung (tốt nhất là CodeIgniter), được hoan nghênh để trả lời.

Cảm ơn câu trả lời.

+0

kiểm tra điều này ra http: // stackoverflow.com/questions/586129/create-subdomains-on-the-fly-with-htaccess-php –

+0

Xem giải pháp của tôi. Với điều kiện bạn có thể bật 'tên miền phụ ký tự đại diện ', điều này có thể đạt được trong' .htaccess'. –

Trả lời

3

Bạn không thể ở số htaccess, bạn phải thiết lập máy chủ ảo thẻ hoang dã và ghi lại URL đó vào URL/thư mục bạn yêu cầu. Xem http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/ để biết thêm thông tin

+0

'Bạn không thể trong htaccess'. Trên thực tế ... http://corz.org/serv/tricks/htaccess2.php (tìm 'nhiều tên miền trong một thư mục gốc'). –

+0

tôi đã đọc đó, và mã này là như thế này: VirtualDocumentRoot c:/dự án /% 1/ nơi nào tôi đặt mã này? trong htaccess? – Henson

+0

Trong tập tin 'httpd.conf' hoặc tương đương (phụ thuộc hệ thống). – Petah

0

Bạn có thể phân tích cú pháp $_SERVER['SERVER_NAME'] để xác định tên miền phụ nào được sử dụng. Phần www thực sự là không cần thiết. Đây chỉ đơn giản là một tên miền phụ không có ý nghĩa. Hầu hết thời gian nó chỉ đơn giản là ánh xạ tới miền chính. Ví dụ:

if (preg_match('/^(www\.)?(.+)\.your-domain.com$/', $_SERVER['SERVER_NAME'], $matches) && $matches[2] != 'www') { 
    $subdomain = $matches[2]; 
    // your logic goes here 
} 
4

Nếu bạn có CPANEL trên máy chủ, có XMLAPI cho phép bạn tạo động tên miền phụ thông qua PHP.

Có, động, không theo cách thủ công. Tôi chỉ dành 2 ngày cuối cùng cho việc này (tạo ra mọi thứ từ các tên miền phụ để gửi email đến các miền addon và sql dbs, users .... mọi thứ), và cpanel API xử lý tất cả, sạch sẽ. Vì vậy, hãy dành thời gian và tìm ra.

Tải xuống XMLAPI ở liên kết đầu tiên trên trang này: http://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html. Tệp xmlapi.php là tệp duy nhất bạn cần trên máy chủ của mình.

Trang diễn đàn đó là một nghĩa trang về đêm của một số ví dụ làm việc được viết bởi các lập trình viên rất tiên tiến và/hoặc rất khó có điểm xuất phát không rõ ràng.

Đây là tập lệnh cơ bản trong PHP để thêm tên miền phụ, thay thế mũ bằng giá trị cá nhân của bạn. Điều này đã cho tôi một thời gian để có được quyền. May mắn nhất! Các bước tiếp theo, nhấn liên kết diễn đàn đó và đọc tất cả các hàm API1 và API2 khác!

include("PATH_TO_THE_DOWNLOADED_xmlapi.php"); 

    $ip = "YOUR_IP_ADDRESS"; 
$root_pass = "ROOT_CPANEL_PASSWORD!"; 


$xmlapi = new xmlapi($ip); 
$xmlapi->password_auth("root",$root_pass); 

$account = "YOUR_CPANEL_MAIN_ACCNT_NAME"; 


print $xmlapi->api2_query($account, 'SubDomain','addsubdomain', array(dir=>"public_html/NAME_OF_SUBDOMAIN", domain=>"NAME_OF_SUBDOMAIN", rootdomain=>"MAIN_DOMAIN.com")); 
-1

Điều này có thể đạt được trong .htaccess với điều kiện máy chủ của bạn được định cấu hình để cho phép tên miền phụ ký tự đại diện. Tôi đã đạt được điều đó trong JustHost bằng cách tạo tên miền phụ theo cách thủ công có tên là * và chỉ định thư mục có tên miền phụ làm tài liệu gốc cho tên miền phụ ký tự đại diện. Thêm phần này vào một tập tin .htaccess trong thư mục tên miền phụ của bạn:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.website\.com$ 
RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$ 
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1 
RewriteRule ^(.*)$ /%1/$1 [QSA] 

Cuối cùng, tạo một thư mục cho tên miền phụ của bạn và đặt các tập tin tên miền phụ.

+0

Tại sao lại là downvote? –