Я слышал о использовании перенаправления 301, но мне трудно найти директорию конфигурации Nginx на моём сервере. Буду очень признателен за любые альтернативные решения или рекомендации.
Спасибо, @Lilly. Я хотел бы узнать, могут ли постоянные ссылки обрабатывать также полную смену домена. Для уточнения: мы переезжаем с abc.domain1.com на xyz.domain2.com. Меняются как поддомен, так и домен. Я читал это обсуждение и хотел бы подтвердить:
Вы пытаетесь перенаправить существующую тему Discourse на внешний URL? Для этого постоянные ссылки не предназначены. Я почти уверен, что вы не можете перенаправлять ничего под /t.
Если вы хотите, чтобы посетители https://hoidap.cheng.vn/t/cach-cua-do-nu-bao-binh-don-gian/70 2 были перенаправлены на https://cunghoangdao.info, то, по-моему, лучший вариант — отредактировать сообщение и попросить людей перейти по ссылке на другой сайт.
RewriteEngine On
RewriteRule ^(.*)$ https://new.example.com/$1 [R=301,L]
Я упустил тот момент, что вы переносите только Discourse, а не выполняете миграцию. Поскольку вы меняете только домен, перенаправления постоянных ссылок вам не нужны.
Спасибо @RGJ за рекомендации. Я просто настроил перенаправление на уровне домена у нашего провайдера доменных имен, и это сработало. Старые ссылки теперь правильно перенаправляют на новые.
Вот метод, который я использую для полной перенастройки после смены домена. Я объединил несколько решений, предложенных на этом форуме.
В файле app.yml в конце я добавляю блоки after_web_config и after_ssl:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_web_config:
- replace:
filename: /etc/nginx/nginx.conf
from: /sendfile.+on;/
to: |
server_names_hash_bucket_size 64;
sendfile on;
- file:
path: /etc/nginx/conf.d/discourse_redirect_1.conf
contents: |
server {
listen 80;
listen 443 ssl;
server_name old-domain.com;
return 301 $scheme://new-domain.com$request_uri;
}
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d old-domain.com --keylength"
## Любые пользовательские команды для выполнения после сборки
run:
- exec: echo "Начало пользовательских команд"
## Если вы хотите установить адрес электронной почты в поле 'От кого' для первой регистрации, раскомментируйте и измените:
## После получения первого письма с регистрацией снова закомментируйте эту строку. Она должна выполниться только один раз.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Конец пользовательских команд"
Это обеспечит перенаправление старых ссылок на новый форум без проблем с SSL.