我正在尝试使用Ubuntu在nginx上设置Question2Answer网站(yoalfaaz.com)。现在,网站的主页确实加载,但任何其他页面都没有正确加载。大多数情况下,当我点击我网站上的任何帖子时,它会再次打开主页,有时会打破布局。
这里是sites-available file
server {
listen 80 ;
listen [::]:80 ;
root /var/www/yoalfaaz.com/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name yoalfaaz.com www.yoalfaaz.com;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php$is_args$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
现在,之前只有主页正在打开,而对于每个其他页面,我都收到404 Not Found错误。所以我对try_files
行进行了一些更改,之后,网站页面没有以正确的方式打开。
我还检查过任何类型的错误,但没有,如果我尝试nginx -t
,那么它也会显示成功。伙计们,请帮助我。
答案 0 :(得分:1)
显然问题不是nginx,而是你的应用程序。
查看您网页的HTML,我看到了:
<link href="./qa-plugin/q2a-embed-master/qa-embed.css" rel="stylesheet">
<link rel="stylesheet" href="./qa-plugin/q2a-tag-list-widget-master/tag-list.css?" TYPE="text/css">
<link rel="stylesheet" href="./qa-plugin/Welcome-Widget-master/welcome-widget.css?" TYPE="text/css">
CSS文件的网址是相对于当前路径的,因此如果网址包含类似路径或子目录的内容,基本上位置会发生变化。
以此网址为例:http://yoalfaaz.com/4966/pardesi-ke-naam
尝试在该网页上加载CSS文件./qa-plugin/q2a-embed-master/qa-embed.css
会加载http://yoalfaaz.com/4966/qa-plugin/q2a-embed-master/qa-embed.css
,从而导致404错误。
您应该更改代码以输出绝对网址或根目录相对网址。
示例:
http://yoalfaaz.com/qa-plugin/q2a-embed-master/qa-embed.css
或//yoalfaaz.com/qa-plugin/q2a-embed-master/qa-embed.css
(最后一个是协议相对网址)/qa-plugin/q2a-embed-master/qa-embed.css
(始终从域的根开始)