[英]Nginx, rewrite url for one subdomain with condition, without new virtual host
我正在嘗試重寫一個特定子域的URL。 邏輯解決方案似乎是使用if-else來檢查當前子域是否是那個子域。
我不想要一個新的虛擬主機,因為我有很多設置為子域的東西,如果我為每個子域做了很長的部分,那將是混亂的。
使用Apache,它很容易,只是一個.htaccess文件,我想要和完成。 在nginx中有一種方法可以像這樣工作嗎?
我嘗試的是這樣的:
if ($subdomain = 'foo') {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
不行。 知道怎么樣?
PS:只是為了澄清:變量$subdomain
包含$subdomain
的名稱。 他們看起來像:subdomain.martinfejes.hu。
這是糟糕的方法 - 因為nginx以非常快的方式與虛擬主機一起工作,與使用條件相反。 一般來說,條件由“簡單的虛擬堆棧機器”解釋(參見http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#internals )並且速度很慢。
此外,使用虛擬主機將限制可能的副作用,就像現在的配置復雜性一樣。
你需要像這樣使用正則表達式匹配:
server {
server_name ~ ^foo\.;
location / {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.