2011-09-01 39 views
11

Tôi có một máy chủ chia sẻ với một tên miền và một miền phụ (dành cho thiết bị di động và khách hàng). Mỗi tên miền và tên miền phụ có các trang chỉ mục mặc định khác nhau. Công ty lưu trữ đã bảo tôi đặt tất cả mọi thứ trong tệp .htaccess của tôi vì tôi không có quyền truy cập vào httpd.conf.Thay đổi DirectoryIndex dựa trên miền/miền phụ trong .htaccess

Những gì tôi muốn làm điều này là:

  1. Nếu người dùng đi vào domain1.com các DirectoryIndex nên là: index.html
  2. Nếu người dùng đi vào mobile.domain1.com các DirectoryIndex nên là: mobile-index.html
  3. Nếu người dùng đi vào post.domain1.com các DirectoryIndex nên là: post.php
  4. Nếu người dùng đi vào vote.domain1.com các DirectoryIndex nên là: vote.php

Edit: Ngoài ra, nếu tôi đi đến domain1.com/page/ các DirectoryIndex nên là: index.html. Nếu tôi truy cập mobile.domain1.com/page/, DirectoryIndex phải là: mobile-index.html

Tôi có thể đặt gì trong tệp .htaccess của mình để thay đổi DirectoryIndex cho từng tên miền phụ?

cảm ơn rất mich

Trả lời

18

<IfDefine> không hoạt động như thế. <IfDefine> chỉ chạy khi apache bắt đầu. Bạn nên đi với một giải pháp mod_rewrite. xem câu trả lời @tzakrajs.

Bạn có thể sử dụng trong tập tin .htaccess của bạn:

SetEnvIf Host ^www\. page=www 
SetEnvIf Host ^mobile\. page=mobile 
rewriterule ^.*$ test.php?subdomain=%{ENV:page} [QSA,L] 

Đơn giản chỉ cần cấu hình tất cả tên miền phụ của bạn sử dụng SetEnvIf và sau đó chỉ cần để cho PHP làm kỳ diệu của nó.

+2

Cảm ơn bạn đã làm rõ. Cảm ơn SetEnvIf, tôi nghĩ rằng đó là cách dễ dàng hơn để thực hiện (thay vì tạo ra 4 tập tin khác nhau). Cảm ơn – Tech4Wilco

+0

Nói cách khác: '' không phải là động sau khi Apache bắt đầu. – Geremia

2

Hãy thử điều này:

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteRule ^.*/$ index.html [R=302,L] 
RewriteCond %{HTTP_HOST} ^mobile.domain1.com$ 
RewriteRule ^.*/$ mobile-index.html [R=302,L] 
RewriteCond %{HTTP_HOST} ^post.domain1.com$ 
RewriteRule ^.*/$ post.php [R=302,L] 
RewriteCond %{HTTP_HOST} ^vote.domain1.com$ 
RewriteRule ^.*/$ vote.php [R=302,L] 
+0

nhờ mà làm việc cho trang đích, nhưng nó không hoạt động cho thư mục con. ví dụ mobile.domain1.com/page/ sẽ tải mobile-index.html – Tech4Wilco

+0

Được rồi, tôi đã sửa đổi các quy tắc để chúng phù hợp với bất kỳ thư mục phụ nào (ví dụ: domain1.com/fdskjfkls/ sẽ chuyển hướng đến index.html) – tzakrajs

+0

Nó có nhưng không chuyển hướng đến: domain1.com/fdskjfkls/index.html và mobile.domain1.com/fdskjfkls/mobile.html – Tech4Wilco

-1

Bạn có thể thiết lập chỉ sử dụng oyur .htaccess tập tin như thế này:

RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC] 
RewriteRule DirectoryIndex index.html 

RewriteCond %{HTTP_HOST} ^mobile.domain.com$ [NC] 
RewriteRule DirectoryIndex mobile-index.html 

... 
+0

điều này không hoạt động .... – Laxman

+0

@ laxman bạn không cần phải bỏ phiếu xuống chỉ vì nó không làm việc cho bạn – CIRCLE

Các vấn đề liên quan