Я впервые использую NGINX, и у меня возникли проблемы.
Итак, у меня есть запись A, указывающая на test.example.com, и я создал CNAME toto.example.com с перенаправлением на test.example.com test.example.com работает нормально. Когда я получаю к нему доступ, меня перенаправляют на test.example.com/mysite (я сделал перенаправление на NGINX). Я также должен упомянуть, что мой NGINX перенаправляет каждый запрос в HTTPS (с сертификатом Let's Encrypt).
Я хочу, чтобы, когда я перехожу на toto.example.com, я хочу, чтобы он был перенаправлен на test.example.com/mysite, НО все еще в браузере отображается toto.example.com/mysite вместо test.example. com / mysite в качестве URL-адреса.
Как я могу это сделать? Найдите ниже мою конфигурацию NGINX (у меня только одна настройка сайта). Учтите, что каждый запрос нужно отправлять не по протоколу HTTP, а по протоколу HTTPS.
server {
listen 80;
server_name test.example.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name test.example.com;
root /var/www;
ssl_certificate /path/to/my/certificate;
ssl_certificate_key /path/to/my/key;
ssl_trusted_certificate /path/to/my/certificate;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
location / {
try_files $uri $uri/ /index.php;
return 301 https://test.example.com/mysite;
}
location /sitetwo {
index index.php;
try_files $uri $uri/ /sitetwo/index.php;
}
location /sitethree{
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /mysite {
index index.php;
try_files $uri $uri/ /mysite/index.php;
}
location ~ ^/mysite/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
deny all;
}
location ~ ^/mysite/(bin|SQL|config|temp|logs)/ {
deny all;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {return 404;}
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Задача решена!! Я ставлю / в конце возвращаемого URL-адреса 301. Это не сработало. Я удалил /, и это сработало.
У меня было это:
return 301 https://toto.example.com/mysite/;
И я сделал это:
return 301 https://toto.example.com/mysite;
Теперь все работает отлично! Большое спасибо, Ричард!