我在子目录中运行了多个WordPress网站。
一切都很好,但我希望简化我的nginx配置。
目前,当我添加位置时,我需要在指定目录的服务器{}配置中添加一个条目。
location / {
try_files $uri $uri/ /index.php?q=$args;
}
location /site1 {
try_files $uri $uri/ /site1/index.php?q=$args;
}
location /site2 {
try_files $uri $uri/ /site2/index.php?q=$args;
}
location /site2 {
try_files $uri $uri/ /site3/index.php?q=$args;
}
location /site4 {
try_files $uri $uri/ /site4/index.php?q=$args;
}
我尝试添加正则表达式来匹配子目录,但似乎有问题。
location /([_-0-9a-zA-Z]/?) {
try_files $uri $uri/ /$1index.php?q=$args;
}
似乎没有做到这一点。理论上应该匹配一个子目录,或者什么都不匹配,并且能够让我添加新目录而不必触及nginx配置。
任何指针都会受到赞赏。
@jedifans指出了如何使正则表达式工作
感谢。这可以在任何页面上实现,但是当我去/它只是尝试下载index.php。
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass php70;
fastcgi_keep_conn on;
}
location ~ ^/([_\-0-9a-zA-Z]*/?) {
try_files /$1$uri /$1$uri/ /$1index.php?q=$args;
}
但是,当我访问domain.com/site1/时,我会下载index.php而不是主页。有什么遗漏?
答案 0 :(得分:0)
我认为你在新的位置块中缺少以下内容,〜运算符对nginx说它是正则表达式。尝试:
location ~ ^/([_-0-9a-zA-Z]*/?) {
一些正则表达式调整,^说它必须以/和*开头,以匹配[和]中的多个字符
编辑:更新问题后,请尝试以下try_files指令:
try_files $uri $uri/ /$1/index.php?q=$args;
$ uri应该在没有匹配字符串的情况下工作,并且我在匹配的查询和index.php之间添加了一个/;
同时确保index index.php;
处于server{}
级别。