2011-03-31 79 views
0

對於我的子域,我想指向一個不同的robots.txt文件。我希望下面的代碼將工作:請幫我理解子域robots.txt的簡單nginx重寫問題

if ($host ~ subdomain) { 
    rewrite ^/favicon.ico$ /favicon.ico break; 
    rewrite ^/robots.txt$ /robots.subdomain.txt break; 
    rewrite ^/([^\/]*)?/?(.*)?$ /index.php?in1=$1&in2=$2&$query_string last; 
} 

favicon.ico的正常工作,所有其他擴展改寫到index.php就好了,但這樣是robots.txt的。

我花了很多時間試圖解決它,我通過在robots.txt重寫後添加以下行來做到這一點。

rewrite ^/robots.subdomain.txt$ /robots.subdomain.txt break; 

是否有人可以幫助我,爲什麼它只有當我加入這行,如果你還看不到任何明顯的低效到我的配置任何改進將受到歡迎的作品!謝謝。

回答

0

這應該是你在找什麼:

location/{ 
    rewrite ^/robots.txt$ /robots.$host.txt; # rewrites robots.txt 

    try_files $uri $uri/ @php; # try_files serves statics and sends everything else 
          # to your front controller (index.php) 
          # files such as favicon.ico get served normally 
} 

location @php { 
rewrite ^/([^\/]*)?/?(.*)?$ /index.php?in1=$1&in2=$2 last; 
} 

唯一需要注意的是,你的robots.txt需要完整的主機後,被命名,所以在上面的例子中你www.domain.com需要在文檔根目錄中有一個robots.www.domain.com.txt文件。這似乎有點難看,所以我會做它,而不是這樣:

rewrite ^/robots.txt$ /$host.robots.txt; 

,然後你的名字你的文件www.example.com.robots.txt