我試圖建立與基本3種不同類型的內容的nginx的服務器:如何在nginx上的論壇子文件夾中提供靜態文件?
- 主要網站上,笨運行
- AQ &論壇,在子文件夾
/qa
(上Question2Answer運行) - 靜態文件(在不同的地點,包括
/qa
)
我遇到各種麻煩。我現在的配置(服務器塊內)是:
# Q2A
if ($request_uri ~* "^/qa/") {
rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last;
}
# CI
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?$1 last;
}
location/{
index index.php index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_cache one;
fastcgi_cache_key $scheme$host$request_uri;
fastcgi_cache_valid 200 302 304 5m;
fastcgi_cache_valid 301 1h;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/site$fastcgi_script_name;
fastcgi_param HTTPS off;
}
這主要工作,除了這些問題:
在我的應用程序文件夾中的PHP文件- 請求被分析/執行。顯然,因爲這不是通過CI應用程序它會導致錯誤(變量未找到等)。
- 的
qa
夾中的所有靜態文件正在通行證Q2A應用,而被服務的靜態文件
我已經嘗試了很多不同的東西我已經記不清,如使用位置塊像location ~* ^/qa/ {}
和try_files
的各種排列,但沒有運氣。我也嘗試修改this Wordpress example on the nginx site。他們中的大多數只是以/qa/
返回404結束。一些方法導致服務器提供原始PHP代碼!
任何人都可以幫助正確的方法來設置?
謝謝,但由於某種原因,除了目錄本身'mysite.com/qa /'之外,/ qa目錄中的頁面不工作。另外,我嘗試將其改爲'location〜* ^/qa /(.*)?$'以確保它是整個URL,並提示下載PHP代碼! – DisgruntledGoat
嗯,我可能會有一些錯誤。這裏是最初的Apache規則:'RewriteRule ^。* $ index.php?qa-rewrite = $ 0&%{QUERY_STRING} [L]' – DisgruntledGoat
就像我說的,如果我使用'location〜'** **下載**實際的PHP代碼,即下載文件'/ qa/index.php'。爲什麼會這樣? – DisgruntledGoat