2010-04-11 38 views
8

Tôi nghĩ đây là một câu hỏi khá đơn giản.Mod Rewrite Hide Folder

Làm cách nào để bạn viết lại apache để ẩn thư mục.

EX: www.website.com/pages/login.php để www.website.com/login.php

hoặc www.website.com/pages/home.php để www.website.com/ home.php

Thư mục cần được ẩn đi. cảm ơn

Trả lời

12

Tôi cho rằng điều bạn muốn là để trình duyệt yêu cầu /home.php nhưng máy chủ thực sự sử dụng tệp nằm ở /pages/home.php, phải không? Nếu vậy, thao tác này sẽ hoạt động:

Đảm bảo rằng mô-đun apache mod_rewrite được cài đặt. Sau đó, sử dụng một cái gì đó như thế này trong cấu hình apache của bạn, máy chủ cấu hình ảo, hoặc (kém hấp dẫn) tập tin .htaccess:

RewriteEngine On 
RewriteRule ^/(.*)$ /pages/$1 

Các quy tắc sử dụng biểu thức thông thường, vì vậy bạn có thể muốn nhìn vào một tài liệu tham khảo về chủ đề đó nếu bạn không chắc chắn. Đọc số manual để biết thêm thông tin về các chỉ thị khác (RewriteCond có thể rất hữu ích) hoặc các tùy chọn quy tắc.

0

Nếu ví dụ của bạn thực sự phản ánh các tập tin bạn cần, sau đó trong tập tin .htaccess của bạn:

#Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^/pages/(.+)\.php $1\.php [NC, L] 

Ngoài ra, nếu thư mục đã đọc phép, nó không thể được, trong thực tế "ẩn". Tôi giả sử bạn có nghĩa là nó không còn xuất hiện trong url.

+1

Đây là những gì tôi đã có lúc đầu, quá. Nhưng điều này có nghĩa là người dùng sẽ thấy /pages/home.php trong thanh địa chỉ, trong khi máy chủ sẽ phục vụ lên /home.php. Sau khi suy nghĩ lại, tôi nghĩ rằng OP muốn đối diện ... – grossvogel

+0

@grossvogel - bạn nói đúng - tôi đọc lại câu hỏi của anh ấy chặt chẽ hơn. – TMG

8

Tôi biết bài đăng gốc ở đây là từ vài năm trước, nhưng nó đã được đưa lên đầu tiên trong công cụ tìm kiếm, vì vậy có thể điều này sẽ giúp những người khác tìm cách ẩn tên thư mục trong URL.

Không chính xác áp phích gốc nào muốn, nhưng dọc theo cùng một dòng.

RewriteCond %{HTTP_HOST} ^mydomainname\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomainname\.com$ 
RewriteCond %{REQUEST_URI} !^/subfoldername/ 
RewriteRule (.*) /subfoldername/$1 

Ví dụ trên sẽ chuyển hướng bất kỳ yêu cầu mydomainname.com hoặc www.mydomainname.com vào thư mục subfoldername trong thư mục gốc cho các tên miền và tên thư mục con sẽ không xuất hiện trong URL.