Я запускаю joomla 3.7.3 с помощью nginx 1.10.3, и у меня проблема с удалением завершающих слэшей. У меня включены «удобные для поисковых систем URL», а также «Использовать перезапись URL».
В моем файле конфигурации nginx есть следующие вещи:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/folder;
index index.php index.html index.htm default.html default.htm;
rewrite ^/(.+)/$ /$1 permanent;
server_name 000.000.00.000;
server_name_in_redirect off;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
И работает, но частично. URL-адреса вроде:
http://000.000.00.000/category/ конечно стал http://000.000.00.000/category
но когда я пытаюсь получить доступ http://000.000.00.000/administrator/ теперь он недоступен, и Chrome сообщает ERR_TOO_MANY_REDIRECTS
Я не могу понять, как это исправить, я также пытался заменить:
location / {
try_files $uri $uri/ /index.php?$args;
}
с этим:
location / {
try_files $uri /index.php?$args;
}
Но потом, когда я пытаюсь получить доступ http://000.000.00.000/administrator/ сервер перенаправляет меня обратно на мою домашнюю страницу http://000.000.00.000/
Пожалуйста, помогите мне разобраться в этом.
В настоящее время rewrite
происходит до и независимо от try_files
внутри location
.
Вы можете попытаться поместить его в определенное место после тестирования статических файлов, например.
location / {
try_files $uri $uri/ @joomlaurls;
}
location @joomlaurls {
rewrite ^/(.+)/$ /$1 permanent;
try_files $uri $uri/ /index.php?$args;
error_page 404 = /index.php;
}