在Nginx的,你只需要設置一些與此類似:
server {
listen 80;
server_name *.domain.dev;
...
}
注意的:
server_name *.domain.dev;
在您的應用程序,則需要拆分/處理HOST頭。
另一種方法,但這意味着redirect 301是做這樣的事情:
server {
listen 80;
server_name ~^(?<subdomain>\w+)\.your-domain\.tld$;
return 301 https://domain.dev/profile?user=$subdomain;
}
在這種情況下,注意到在伺服器的regex:
server_name ~^(?<subdomain>\w+)\.your-domain\.tld$;
這可以幫助您使用的子網域如$subdomain
。
爲了避免重定向這可能工作:
server {
listen 80;
server_name ~^(?<subdomain>\w+)\.your-domain\.tld$;
location/{
resolver 8.8.8.8;
proxy_pass http://httpbin.org/get?user=$subdomain;
proxy_set_header Host httpbin.org;
}
}
出於測試目的,我使用http://httpbin.org/on the
proxy_pass`,這樣你就可以用類似測試:
$ curl foo.your-domain.tld:8080
{
"args": {
"user": "foo"
},
"headers": {
"Accept": "*/*",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "curl/7.54.0"
},
"origin": "91.65.17.142",
"url": "http://httpbin.org/get?user=foo"
}
通知響應:
"url": "http://httpbin.org/get?user=foo"
匹配subdomai在這種情況下,您需要輸入foo
.your-domain.tld。
是的,我做到了,但是當我轉到test.domain.dev時,它重定向到索引頁面。我的問題是創建一個規則來重寫用戶配置文件。相反:http://test.domain.dev不必顯示索引,但測試的用戶配置文件是在domain.dev/profile?user=test – Stackedo
只需添加另一個示例將test.domain.dev發送到domain.dev/profile?user = test,希望它有幫助 – nbari
有一種方法可以查看我在/ profile上看到的內容嗎?user = test in test.domain.dev? 沒有重定向我的意思是 – Stackedo