그래서 저는 이것에 상당히 익숙하지 않으며 간단한 웹 페이지에서 nginx 서버를 실행하고 있습니다. 내가 가지고 있는 구성은 다음 sites-available
과 같습니다.
server {
listen 80 default_server;
root /var/www/mywebsite/;
index /html/index.html;
server_name mywebsite.com www.mywebsite.com;
location / {
try_files $uri $uri/ =404;
}
}
내 index.html은 다음 구조에 있습니다.
+------+ +----------+
+ html +-->+index.html|
+------+ +----------+
|
| +--------------+
+-->+scnd_page.html|
+--------------+
에 액세스하면 mywebsite.com
가 표시됩니다 index.html
. 어떻게 가리킬 수 mywebsite.com/scnd_page/
있습니까 send_page.html
?
나는 몇 가지 물건을 만들어 보았습니다.
location /scnd_page {
}
하지만 내가 올바른 길을 가고 있는지 확신할 수 없습니다. 이 파일에서도 이 작업을 수행할 수 있나요?
답변1
당신은 사용할 수 있습니다rewrite
.html
사용자에게 절대 표시되지 않도록 외부 리디렉션을 발행해야 합니다 .try_files
실제 파일을 제공합니다.
location / {
rewrite ^(/.*)\.html$ $1 redirect;
try_files $uri $uri/index.html $uri.html =404;
}
하지만 /$
암시하기 위해 후행 슬래시를 지원하는 것은 권장하지 않습니다 . \.html$
이러한 지원에 대한 논리는 약간 추악할 뿐만 아니라 해당 내에서 상대 URL을 사용하려고 하면 추가 문제가 발생할 수도 있습니다 scnd_page.html
.
답변2
위치 블록 내부에 index 매개변수를 구성할 수 있습니다.
location /html/scnd_page { index scnd_page.html; }
또한 scnd_page.html을 전역적으로 "보조" 색인으로 정의할 수도 있습니다.
server {
listen 80 default_server;
root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;
server_name mywebsite.com www.mywebsite.com;
location / {
try_files $uri $uri/ =404;
}
}