我一直试图让这个工作几个小时,但没有什么似乎工作。 我已经有了一个Drupal站点,并且默认位置如下所示:
# Default location location / { try_files $uri @rewrite; } location @rewrite { rewrite_log on; rewrite ^/(.*)$ /index.php?q=$1; }
这工作正常,最终的结果是,所有不直接指向根(如“example.com/subdir1”和“example.com/subdir1/subdir2”)的path被重写为index.php?q = [path]。
但是,恰巧我在网站上有几个子目录,它们是包含index.php文件的“真正的”子目录。 我想testing是否有任何给定的子目录确实有一个index.php,然后运行那个。 这是我认为会奏效的一个尝试:
# Default location location / { try_files $uri @subdir @rewrite; } location @subdir { rewrite_log on; rewrite ^/(.*)$ $1/index.php; } location @rewrite { rewrite_log on; rewrite ^/(.*)$ /index.php?q=$1; }
但是,它不起作用。 我也试过:
# Default location location / { try_files $uri $uri/index.php @rewrite; } location @rewrite { rewrite_log on; rewrite ^/(.*)$ /index.php?q=$1; }
那也行不通。 我无法弄清楚我做错了什么?
logging:我的configuration文件是Drupal&nginx:一个健全的“通用”configuration?
您将需要告诉nginx使用索引来查找index.php文件。 http://wiki.nginx.org/HttpIndexModule
将其添加到服务器,http或位置块:
index index.php index.html
那么你的configuration应该几乎保持不变,但也有$uri/
check:
# Default location location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite_log on; rewrite ^/(.*)$ /index.php?q=$1; }