簡體   English   中英

Nginx,為一個具有條件的子域重寫url,沒有新的虛擬主機

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM