使用nginx设置以下设置时遇到一些问题:
的
这些是幼虫站点,gb/en是将添加的更多站点中的第一个。Root可以使用obvs,但我无法让/gb/en指向/gb/en/public文件夹。
我尝试了很多方法,但这是我当前的conf文件:
server {
listen 80;
listen [::]:80;
server_name www.example.com;
root /home/forge/www.example.com/public;
ssl_protocols TLSv1.2;
ssl_ciphers TEST;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /gb/en {
root /home/forge/www.example.com/gb/en/public;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/www.example.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
你可以在那里看到我的位置块,我尝试了许多不同的方法,但都没有效果。
任何帮助都将不胜感激。
编辑:
所以,一旦我意识到url中的子文件夹也被添加到根目录中,我就更接近了一步:
location /gb/en/ {
root /home/forge/www.example.com/public;
try_files $uri $uri/ /public/index.php?url=$uri;
}
因此,我的文件位于/public/gb/en/public下,但上面的文件解析为/public/gb/en/index.php
如何让/gb/en/解析为public/gb/en/public/index.php?
非常感谢;)
编辑:
我突然想到了这个主意--使用符号链接!我将/gb/en符号链接到一个单独的文件夹中的公共文件夹,这很有效;)
发布于 2019-04-15 02:00:33
我最后使用了一个符号链接来实现这一点。我将/gb/en符号链接到另一个位置的公共文件夹,它完成了我想要做的事情;)
编辑-我后来发现子页面也有问题,但后来找到了这个示例,它帮助实现了我最初想要的https://gist.github.com/noeldiaz/08a1211a7c47f21f7083
发布于 2019-04-02 16:46:46
我建议将try_files
行复制到/en/gb
块中。在该文件夹或站点中,您没有指定您想要使用的扩展名,就像在正常工作的文件夹或站点中所做的那样。
试试这个:
location /gb/en {
root /home/forge/www.example.com/gb/en/public;
try_files $uri $uri/ /index.php?$query_string;
}
但是,如果/en/gb
的内容与站点相关,则直接在Laravel中设置可能是更好的选择。
https://stackoverflow.com/questions/55470165
复制相似问题