baltun

Администратор
Сообщения
10.731
Реакции
2.542
Баллы
2.003
Назрела необходимость переехать из папки /forum в корневую директорию сайта, соответственно все старые ссылки были вида "web-zones.ru/forum", а после переезда стали "web-zones.ru". Понятное дело что все ссылки после переезда стали битые и не работоспособные.
Проблему я решил несколькими запросами в базе данных.
Первое заменяем ссылки на нужные нам следующим запросом, пример:
Код:
UPDATE Ваша_таблица SET Ваше_поле = REPLACE(Ваше_поле, 'Старая_ссылка', 'новая_ссылка') WHERE Ваше_поле LIKE '%Старая_ссылка%';

А теперь на практике написали следующие применимое к Xenforo.
Код:
UPDATE xf_phrase_compiled SET phrase_text = REPLACE(phrase_text, 'web-zones.ru/forum/', 'web-zones.ru/') WHERE phrase_text LIKE '%web-zones.ru/forum/%';
UPDATE xf_search_index  SET message = REPLACE(message, 'web-zones.ru/forum/', 'web-zones.ru/') WHERE message LIKE '%web-zones.ru/forum/%';
UPDATE xf_resource_update SET message = REPLACE(message, 'web-zones.ru/forum/', 'web-zones.ru/') WHERE message LIKE '%web-zones.ru/forum/%';
UPDATE xf_post SET message = REPLACE(message, 'web-zones.ru/forum/', 'web-zones.ru/') WHERE message LIKE '%web-zones.ru/forum/%';
UPDATE xf_conversation_message SET message = REPLACE(message, 'web-zones.ru/forum/', 'web-zones.ru/') WHERE message LIKE '%web-zones.ru/forum/%';
UPDATE xf_addon SET url = REPLACE(url, 'web-zones.ru/forum/', 'web-zones.ru') WHERE url LIKE '%web-zones.ru/forum/%';

Далее чистим кэшь bb кодов, это тоже обязательно.
Код:
DELETE FROM xf_bb_code_parse_cache;

Если у вас до этого стоял плагин Dead Link Management, то чистим его таблицы тоже и перестраиваем его кэшь, как будто его запускаем первый раз только.
Код:
DELETE FROM phc_deadlinks;
DELETE FROM phc_deadlinks_post;

И вуаля теперь все ссылки работают на форуме, а при сканировании плагином Dead Link Management нет у нас нечего битого и пользователи довольны. Соответственно тоже самое можно сделать когда вы переезжаете на другой домен.
 
Последнее редактирование:
  • Мне нравится
Реакции: Halk
Доброго времени суток
Я к вам за советом

есть сайт на WP
и форум на XenForo

Решил перенести форум на корневой домен, т.к. до сайта руки точно не дойдут

Стараюсь придерживаться позиции - семь раз отмерь, один отрежь поэтому почитал на других ресурсах это делается, но всетаки хочется уточнить, т.к. у вас немного другие движения в этом плане)

Сношу все в папке с сайтом и переношу туда все файлы форума
В настройках меняю поддомен на домен

Этого будет достаточно?

Что произойдет с действующими урлами? Они просто сами поменяют вид с
на или нужны какието еще телодвижия?

И что делать с БД? Создавать новую и экспортировать в нее БД форума или вобще ничего не трогать
 
Для WP я бы просто так сносить не стал, а если не нужен просто собрал бы в архив вместе с базой данных и оставил. Всегда можно продать отдать или на этой основе кому нибудь сделать сайт, блог и т.д. В настройках форума надо поменять поддомен на домен и перенести его в корневую папку домена, с базой делать нечего не надо она у расположению форума не привязана, единственное если у вас на форуме настроено кэширование в config.php при кэшировании пишется путь до папки форума, там надо будет путь поправить и почистить папку cache. Если этого нет тогда делать тоже нечего не надо, урлы на форуме сами поправятся, но вот ссылки которые были в сообщениях и переписки не поправятся для этого надо будет выполнять запросы выше в базе через к примеру phpmyadmin. Так же можно поставить дополнение Dead Link Management, которое мониторит ссылки и показывает битые.
 
понял, спасибо
но поскольку форум будет уже недоступен по адресу поддомена, то нужно делать 301 редирект на корневой домен
вот с этим у меня проблема, не пойму как настроить .htaccess :dntknw:

вот так он выглядит на данный момент (по умолчанию был такой) и что куда прописывать не понятно ...

Код:
#    Mod_security can interfere with uploading of content such as attachments. If you
#    cannot attach files, remove the "#" from the lines below.
#<IfModule mod_security.c>
#    SecFilterEngine Off
#    SecFilterScanPOST Off
#</IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

<IfModule mod_rewrite.c>
    RewriteEngine On

    #    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #    This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>
 
Попробуйте так было у вас:
Код:
<IfModule mod_rewrite.c>
    RewriteEngine On

    #    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #    This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>
Стало:
Код:
<IfModule mod_rewrite.c>
    RewriteEngine On
    #Откуда идет переадресация
    RewriteCond %{HTTP_HOST} domain1.ua/forum
    #Куда требуется
    RewriteRule (.*) http://domain2.ua/$1 [R=301,L]

    #    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #    This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>
 
Благодарю
Вроде все прошло успешно :good2:
Редиректы настроил, заодно для кучи перевел домен на https
 
заодно для кучи перевел домен на https
Сейчас https очень актуален т.к google и остальные поисковики насколько я знаю отдают таким сайтам предпочтение. :yes2:
Запросы которые могут понадобиться при переезде с одного доменного имени на другое (Актуально для Xenforo 2):
Код:
UPDATE xf_user_upgrade SET description = REPLACE(description, 'super.ru', 'free.ru') WHERE description LIKE '%super.ru%';
UPDATE xf_user_profile SET signature = REPLACE(signature, 'super.ru', 'free.ru') WHERE signature LIKE '%super.ru%';
UPDATE xf_unfurl_result SET url = REPLACE(url, 'super.ru', 'free.ru') WHERE url LIKE '%super.ru%';
UPDATE xf_unfurl_result SET favicon_url = REPLACE(favicon_url, 'super.ru', 'free.ru') WHERE favicon_url LIKE '%super.ru%';
UPDATE xf_template SET template = REPLACE(template, 'super.ru', 'free.ru') WHERE template LIKE '%super.ru%';
UPDATE xf_search_index SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_report_comment SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_post SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_option SET option_value = REPLACE(option_value, 'super.ru', 'free.ru') WHERE option_value LIKE '%super.ru%';
UPDATE xf_notice SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_node SET description = REPLACE(description, 'super.ru', 'free.ru') WHERE description LIKE '%super.ru%';
UPDATE xf_nf_tickets_message SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_nf_tickets_kb_article SET content = REPLACE(content, 'super.ru', 'free.ru') WHERE content LIKE '%super.ru%';
UPDATE xf_navigation SET type_config = REPLACE(type_config, 'super.ru', 'free.ru') WHERE type_config LIKE '%super.ru%';
UPDATE xf_navigation SET data_expression = REPLACE(data_expression, 'super.ru', 'free.ru') WHERE data_expression LIKE '%super.ru%';
UPDATE xf_navigation SET default_value = REPLACE(default_value, 'super.ru', 'free.ru') WHERE default_value LIKE '%super.ru%';
UPDATE xf_user_alert SET extra_data = REPLACE(extra_data, 'super.ru', 'free.ru') WHERE extra_data LIKE '%super.ru%';
UPDATE xf_template SET template_parsed = REPLACE(template_parsed, 'super.ru', 'free.ru') WHERE template_parsed LIKE '%super.ru%';
UPDATE xf_edit_history SET old_text = REPLACE(old_text, 'super.ru', 'free.ru') WHERE old_text LIKE '%super.ru%';
UPDATE xf_moderator_log SET content_title = REPLACE(content_title, 'super.ru', 'free.ru') WHERE content_title LIKE '%super.ru%';
UPDATE xf_data_registry SET data_value = REPLACE(data_value, 'super.ru', 'free.ru') WHERE data_value LIKE '%super.ru%';
UPDATE xf_conversation_message SET message = REPLACE(message, 'super.ru', 'free.ru') WHERE message LIKE '%super.ru%';
UPDATE xf_change_log SET old_value = REPLACE(old_value, 'super.ru', 'free.ru') WHERE old_value LIKE '%super.ru%';
UPDATE xf_change_log SET new_value = REPLACE(new_value, 'super.ru', 'free.ru') WHERE new_value LIKE '%super.ru%';
super.ru - старое доменное имя, free.ru - новое доменное имя
 
Последнее редактирование:
Назад
Верх Низ