Php
Nginx 子目錄 Drupal + 其他應用
我有一個 drupal 應用程序和另外 2 個用 php 編寫的應用程序,我想為 drupal 使用重寫 uri,並將 drupal 放在虛擬根目錄 / 中,另一個按他們的名字……並將伺服器記憶體用於每個應用程序的 img。
前任 :
- xxx.com 或 xxx.com/ –> /var/www/xxx.com/drupal/
- xxx.com/app1 或 xxx.com/app1/ —-> /var/www/xxx.com/app1/
- xxx.com/app2 或 xxx.com/app2/ —-> /var/www/xxx.com/app2/
我已經測試過:別名,每個位置的根目錄,有條件的 $request_uri,單獨的配置……並且總是一個錯誤:img 路徑,php 路徑,404 用於所有應用程序或 drupal 之一
所以我真的迷路了……
這是一個測試(也許是一些好東西):
# enforce www if ($host !~* ^(www)) { rewrite ^/(.*)$ $scheme://www.$host/$1 permanent; } location / { root /var/www/gplaza.cl/Drupal; index index.php index.html; if (!-f $request_filename) { rewrite ^(.*)$ /index.php?q=$1 last; break; } if (!-d $request_filename) { rewrite ^(.*)$ /index.php?q=$1 last; break; } } location /app1/ { alias /var/www/gplaza.cl/app1/; index index.php; } location /app2/ { alias /var/www/gplaza.cl/app2/; index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/xxx.com$fastcgi_script_name; } location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { set $static_content /var/www/xxx.com/Drupal; if ($request_uri ~ ^/app1) { set $static_content /var/www/xxx.com/app1; } if ($request_uri ~ ^/app2) { set $static_content /var/www/gplaza.cl/app2; } expires 30d; access_log off; root $static_content; } thank a lot if anybody can help me :)
位置指令以預定義的順序檢查(http://wiki.nginx.org/HttpCoreModule#location)。在您的情況下,PHP文件的正則表達式是首先考慮anc記憶體管理,然後是/位置和(如果/不應該匹配)/app1/和/app2/指令。由於 root 將始終匹配,因此永遠不會檢查 /app1/。
解決方案很簡單:將 /app1/ 和 /app2/ 放在 /-location 指令之前並重新載入 nginx 配置。
BurninLeo