2012-02-23 42 views
7

Có cách nào để sử dụng htaccess để báo cho thư mục con hoạt động như thư mục gốc cho toàn bộ trang web không?Sử dụng .htaccess để đặt thư mục con làm thư mục gốc

Ví dụ, nếu tôi đã có một trang web dưới http://localhost/testsite/ và trong đó là tập tin index.php Tôi đã có một tham chiếu đến các kiểu sử dụng đoạn mã sau ..

<link rel="stylesheet" type="text/css" href="/css/layout.css" /> 

Tôi có thể sau đó hãy tải rằng/localhost/testsite/css/layout.css?

Để khắc phục sự cố này, tôi thiết lập tên miền phụ localhost cho mỗi trang web mặc dù hoạt động, không phải là lý tưởng.

Rất cám ơn.

+6

Thiết lập máy chủ ảo. –

+0

Như cillosis chỉ ra, điều này thường sẽ được thực hiện trong cấu hình Apache của bạn cho trang web. Chỉ cần đặt [DocumentRoot] (http://httpd.apache.org/docs/2.0/mod/core.html#documentroot) thành thư mục mong muốn. –

Trả lời

2

Chắc chắn, tất cả các URI tương đối (như bạn) có liên quan đến cơ sở URI mà theo mặc định là URI của tài liệu:

http://localhost/testsite/index.php 

Bạn chỉ cần nói đó là một phần thêm:

<link rel="stylesheet" type="text/css" href="./css/layout.css" /> 
              ^
              ` see this dot 

Ví dụ:

Base URI  :: http://localhost/testsite/index.php 
Relative URI :: ./css/layout.css 
Result  :: http://localhost/testsite/css/layout.css 

Nếu bạn cần phải có mô-đun hơn này, có rất nhiều cách để làm tha t. Một là đặt URI cơ bản một cách rõ ràng bên trong tài liệu HTML (xem <base>).

Một cách khác là giải quyết các liên kết tương đối ở phía máy chủ dựa trên URI yêu cầu và đường dẫn gốc của trang web của bạn. Xem this answer để biết ví dụ.

20

Nếu bạn muốn giữ phần 'href = "/ css/layout.css"', thì có, bạn có thể thiết lập quy tắc viết lại. Bạn chỉ cần cẩn thận để không chuyển hướng bất cứ điều gì bắt đầu với/testsite (hoặc bạn sẽ kết thúc với một vòng lặp).

Giống như (trong .htaccess root):

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/testsite/.*$ 
RewriteRule ^(.*)$ /testsite/$1 [QSA,L] 

Ở đó, bạn sẽ có thể truy cập tập tin layout.css của bạn hoặc từ:

http://localhost/testsite/css/layout.css

hoặc

http://localhost/css/layout.css

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