Интересно, может ли кто-нибудь с опытом работы с nginx помочь мне с проблемой правила перезаписи, с которой я столкнулся.
Я хочу удалить .html и завершающие косые черты из своих URL-адресов, поэтому я помещаю следующий код в блок server {} в файле nginx conf.d:
error_page 404 404.html;
rewrite ^(/.+)\.html$ $1;
rewrite ^/(.*)/$ /$1 permanent;
try_files $uri.html $uri/ =404;
Это отлично работает, но изображения на моем сайте не работают. У меня они есть в папке Images, поэтому в моем HTML это как <img src="Images/someImage.jpg">
. Раньше они отлично отображались до добавления кода перезаписи, но теперь они не загружаются, и когда я их проверяю, консоль Chrome сообщает: «Не удалось загрузить ресурс: net :: ERR_TOO_MANY_REDIRECTS», а рядом с этим написано http://example.com/Images/404.html
Если кто-то знает, что я здесь делаю неправильно, и может указать мне правильное направление, я буду очень признателен!
Есть несколько способов удалить расширение .html. Один из них является.
rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent; # removing .html
rewrite ^/(.*)/$ /$1 permanent; # removing Trailing Slashes
мы должны убедиться, что Nginx знает, какие файлы искать, в основном все файлы с расширением .html, даже файлы индекса, например index.html. Таким образом, окончательный код будет примерно таким.
server {
# define you server name listen port etc.
.......
.......
.......
rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent; # removing .html
rewrite ^/(.*)/$ /$1 permanent; # removing Trailing Slashes
# defining index with index.html, you can make it home.html or whatever you like.
index index.html;
# try getting only html files.
try_files $uri/index.html $uri.html $uri/ $uri =404;
# defining error pages.
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
}