Có thể sử dụng .htaccess để ghi lại miền phụ vào một thư mục không?
Thí dụ:
hiển thị nội dung của
Có thể sử dụng .htaccess để ghi lại miền phụ vào một thư mục không?
Thí dụ:
hiển thị nội dung của
Câu trả lời:
Hãy thử đưa cái này vào tệp .htaccess của bạn:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
Để có quy tắc chung hơn (hoạt động với bất kỳ miền phụ nào, không chỉ sub
), hãy thay thế hai dòng cuối cùng bằng:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
, khi tôi chỉ muốn nó hiển thịhttp://test.domain.com/
test.domain.com/subdomains/test
- có thể có điều gì đó khác đang xảy ra ở đây. Bạn có thể thêm RewriteBase /
ngay sau đây RewriteEngine on
? Ngoài ra, nếu bạn muốn giữ nó hiển thị, test.domain.com
bạn sẽ phải sử dụng mod_proxy và [P]
cờ.
Tôi không phải là chuyên gia về mod_rewrite, tôi thường gặp khó khăn với nó, nhưng tôi đã làm điều này trên một trong các trang web của mình, nó có thể cần các cờ khác, v.v. tùy thuộc vào hoàn cảnh của bạn. Tôi đang sử dụng cái này:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Bất kỳ quy tắc viết lại nào khác cho phần còn lại của trang web phải được thực hiện sau đó để ngăn chúng can thiệp vào việc viết lại tên miền phụ của bạn.
.htaccess
cập vào trang này (như tôi đã làm), ngoài việc tạo .htaccess
tệp thực , để tệp có hiệu lực, bạn cần phải đặt AllowOverride
trong VirtualHost
cài đặt của mình ( stackoverflow.com/a/22819550/1657502 ) , cho phép Apache của rewrite
mô-đun và sau đó khởi động lại Apache ( stackoverflow.com/a/5758551/1657502 )
www.
tiền tố tùy chọn có lẽ được hỗ trợ tốt nhất thông qua chuyển hướng hơn là viết lại.
Bạn có thể sử dụng quy tắc sau trong .htaccess để ghi lại miền phụ vào một thư mục con:
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Giải thích từng dòng:
RewriteEngine on
Dòng trên thông báo cho máy chủ bật công cụ để viết lại URL.
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
Dòng này là điều kiện cho Quy tắc viết lại mà chúng tôi khớp với máy chủ HTTP bằng cách sử dụng mẫu regex. Điều kiện nói rằng nếu máy chủ lưu trữ là sub.domain.com thì hãy thực thi quy tắc.
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Quy tắc khớp với http://sub.domain.com/foo và chuyển hướng nội bộ đến http://sub.domain.com/folder/foo .
Thay thế sub.domain.com bằng tên miền phụ và thư mục của bạn bằng tên của thư mục mà bạn muốn trỏ miền phụ của mình đến.
Tôi gặp vấn đề tương tự và tìm thấy lời giải thích chi tiết trong http://www.webmasterworld.com/apache/3163397.htm
Giải pháp của tôi (nội dung tên miền phụ phải nằm trong một thư mục có tên sd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
Điều này chuyển hướng đến cùng một thư mục đến một miền phụ:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Cố gắng đặt tệp .htaccess này vào thư mục tên miền phụ:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
Nó chuyển hướng đến http://domain.com/subdomains/sub/ , khi bạn chỉ muốn nó hiển thị http://sub.domain.com/
Chuyển hướng thư mục tên miền phụ:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
Đối với bất kỳ yêu cầu miền phụ nào, hãy sử dụng cái này:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
Chỉ cần tạo một số thư mục giống như tên miền phụ mà bạn cần. Thư mục phải tồn tại như sau: domain.com/sub cho sub.domain.com .
http://test.domain.com
, URL sẽ chuyển hướng tôi đếnhttp://test.domain.com/subdomains/test/
. Có thể mà không hiển thị/subdomains/test/
ở cuối?