2017-09-03 68 views
3

我在Google App引擎上託管應用程序,並且有多個靜態頁面,我希望在其自己的子域中進行投放。將App Engine子域重定向到文件夾

所以,如果域名是example.com我想page.example.com/file服務文件example.com/page/file。如果它是用重寫的方式託管在apache服務器上,這將是一個簡單的任務。

App引擎提供了一個tutorial用於模擬php中的mod_rewrite,但是這會重定向到頁面上的其他腳本,而不是靜態文件,這意味着靜態文件不會被視爲靜態文件。不用閱讀php腳本中的文件,也可以重定向到靜態資源,但這意味着該URL會爲用戶更改,並且他們會在地址欄中看到example.com/page/file,我想爲了避免這一點。

在app.yaml中,我可以做簡單的重寫,但僅限於域之後的部分,而不是子域 - >目錄替換。

回答

0

請注意,使用mod_rewrite模擬意味着您不再將該文件作爲靜態內容提供,您可能會動態提供該文件,有可能進入您的實例小時。

一種方法還是使用靜態服務將映射您的應用程序/服務,作爲example.compage.example.com並出示您在2個地方靜態DIR在app.yaml文件的handlers部分,像這樣:

- url: /(<file_pattern_here>)$ 
    static_files: static/\1 
    upload: static/<file_pattern_here>$ 

- url: /page/(<file_pattern_here>)$ 
    static_files: static/\1 
    upload: static/<file_pattern_here>$ 

但請注意,它也適用於page.example.com/page/file。如果你不喜歡,你可以創建第二個服務,我們稱之爲page,然後你的工作分裂:通過

  • 老服務(default?),映射到example.com響應example.com/page/file請求這個處理程序:

    - url: /page/(<file_pattern_here>)$ 
        static_files: static/\1 
        upload: static/<file_pattern_here>$ 
    
  • page服務,映射到page.example.com響應通過此處理page.example.com/file請求:

    - url: /(<file_pattern_here>)$ 
        static_files: static/\1 
        upload: static/<file_pattern_here>$ 
    

爲了保持static目錄中的內容在2個服務,您應該總是對他們兩人的部署和同步之間只有一個static目錄符號鏈接到需要的,也許是這樣的2個服務:

app/ 
app/static/ 
app/default/ 
app/default/static -> ../static 
app/page/ 
app/page/static -> ../static 
相關問題