如何设置的index.html的域名如https://www.example.com/ -导致用户在根目录下的index.html。
我试着喜欢不同的东西:
server {
# some configs
location = / {
index index.html;
fastcgi_index index.html;
}
or
location / {
index index.html;
fastcgi_index index.html;
}
}
没有什么帮助了我。
还有一些其他的CONFIGS与位置关键字,但我想任何评论他们。
其他“位置” CONFIGS的在server {
条款:
location ~ .*(css|htc|js|bmp|jp?g|gif|ico|cur|png|swf|htm?|html)$ {
access_log off;
root $www_root;
}
location ~ \.php$
{
include /etc/nginx/fastcgi_params;
index index.html;
fastcgi_index index.html;
fastcgi_param SCRIPT_FILENAME $www_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
# Директива определяет что ответы FastCGI-сервера с кодом больше или равные 400
# перенаправлять на обработку nginx'у с помощью директивы error_page
fastcgi_intercept_errors on;
break;
}
location ~ /\.ht {
deny all;
}
所有这些都评论和未加注释,但没有任何帮助。
PS版是在/etc/nginx/sites-enabled/domainname.com文件进行。
在你的位置块,你可以这样做:
location / {
try_files $uri $uri/index.html;
}
它会告诉ngingx寻找与第一给出确切名称的文件,如果没有这样的文件被发现,它会尝试URI / index.html的。 所以,如果一个请求https://www.example.com/谈到它会寻找一个确切的文件匹配,再没有找到,将检查的index.html
location / {
是最一般的位置(与location {
)。 它会匹配任何AFAIU 。 我怀疑,这将是具有有用的location / { index index.html; }
location / { index index.html; }
因为很多你的网站的每个子目录重复的内容。
用这种方法
try_files $ URI $ URI / index.html的index.html的;
是坏的,如在评论中提及上面,因为它返回index.html
为不应该在你的网站上存在的网页(任何可能的$uri
将在结束)。 此外,在回答上面提到的,还有在最后一个参数内部重定向try_files
。
你的方法
location = / { index index.html;
也很糟糕,因为index
使得内部重定向了。 如果你想,你应该能够处理,在一个特定的location
。 例如,创建
location = /index.html {
如提出在这里 。 但是,那么你将有一个工作环节http://example.org/index.html
,这可能不理想。 另一种变体,这是我使用的是:
root /www/my-root;
# http://example.org
# = means exact location
location = / {
try_files /index.html =404;
}
# disable http://example.org/index as a duplicate content
location = /index { return 404; }
# This is a general location.
# (e.g. http://example.org/contacts <- contacts.html)
location / {
# use fastcgi or whatever you need here
# return 404 if doesn't exist
try_files $uri.html =404;
}
PS这是非常容易调试 nginx的(如果你的二进制文件允许)。 只需添加到server {
块:
error_log /var/log/nginx/debug.log debug;
看看那里所有内部重定向等。
答案是根目录放置的位置指令:
root /srv/www/ducklington.org/public_html;
根据文档检查按照指定的顺序文件的存在,并使用用于请求处理的第一找到的文件; 在当前的上下文中执行的处理。 到的文件的路径是从文件参数根据根和别名指令构成。 它可以通过在名称末尾指定一个斜线,以检查目录的存在,如“$ URI /”。 如果发现没有任何文件的,内部重定向到最后一个参数指定的URI而成。 重要
内部重定向到过去参数中指定的URI制成。
因此,在最后一个参数,你应该如果前两个参数返回false添加页面或代码。
location / {
try_files $uri $uri/index.html index.html;
}
对我来说, try_files
的指令(目前大多数投票)回答https://stackoverflow.com/a/11957896/608359导致重写周期,
*173 rewrite or internal redirection cycle while internally redirecting
我曾与指数指令更好的运气。 需要注意的是我的名字,这可能会或可能不是你想要的是以前使用的斜杠。
server {
listen 443 ssl;
server_name example.com;
root /home/dclo/example;
index /index.html;
error_page 404 /index.html;
# ... ssl configuration
}
在这种情况下,我想所有的路径导致/index.html,返回404时,包括。