Jump to content

[3.4.6] Niedziałające linki po przenosinach na nowy serwer


Recommended Posts

Dzień dobry.

 

Dostałem zadanie przeniesienia serwisu opartego o IPB 3.46 na nowy serwer. W teorii nie jest to jakiś wielki problem, więc stwierdziłem, że nie ma sprawy. Ale teoria, a praktyka to dwie różne sprawy... 

 

Zanim przejdę do konkretów, to chciałbym zaznaczyć, że nie znam za bardzo IP.Boarda od środka, nigdy nie miałem z tym do czynienia. Nie jest to moja strona, ani nie ja się tym zajmuję na co dzień. Bardzo możliwe więc, że przeoczyłem coś trywialnego pomimo przejrzenia paru poradników dotyczących przenosin serwisu opartego o ten CMS. Proszę zatem o odrobinę wyrozumiałości :)

 

Przenoszenie wyglądało następująco:

  • Z serwera A na serwer B. 
  • Wszystko w tej samej podsieci adresowej (IP się oczywiście różnią, ale domena jest bez zmian).
  • Fizyczna ścieżka do plików na serwerach jest inna. Nie powinno to mieć większego znaczenia, bo DocumentRoot Apache'a jest identyczny. Znalazłem jedynie tę ścieżkę w panelu sterowania IPB, na potrzeby uploadu plików i oczywiście ją zmieniłem.
  • Wyłączyłem forum, zrzuciłem bazę do SQL, postawiłem bazę na nowym serwerze. Użytkownik, hasła, prefiks itp., takie samo. Normalna sprawa.
  • Przekopiowałem na żywca pliki i zmieniłem niezbędne w config_global.php.
  • Zmieniłem wpis do DNS by uaktualnić IP.
  • Przebudowałem cache z panelu sterowania i posprawdzałem połączenie z bazą, stan samej bazy, uprawienia itp. Przyznaję, że działałem trochę na czuja opierając się bardziej na intuicji. Ale wszystko wydaje się być OK od tej strony.
  • Na starym serwerze było PHP 5.3 oraz MySQL w jakiejś wiekowej wersji (nie pamiętam, ale stary). Na nowym jest PHP 5.6 oraz MariaDB. Wiem o drobnej niekompatybilności MariiDB z MySQL, więc wszędzie tam, gdzie było count(*) as rows odpowiednio poprawiłem. Ale na 100% nie pojawiało się w żadnym pliku powiązanym z główną stroną, chyba tylko w panelu sterowania.

 

Efekt? Prawie dobrze. Serwis wstaje, wyświetla główną stronę (jakieś dziwaczne coś, w stopce jest Unreal Portal. O ile dobrze wyczytałem, to jakiś dodatek do bazowego IPB). Można się zalogować, można wejść w profil użytkownika, można przejrzeć statystyki aktywności.

 

Ale nie da się wejść w żadne linki z modułu forum. Artykuły, posty itp. - nic nie działa. Nie da się otworzyć głównej strony forum (https://domena/index), ani wejść w temat mając do niego bezpośredni odnośnik. Wylatuje standardowy komunikat Apache'a "The requested URL was not found on this server".

 

Posprawdzałem wszelkiego rodzaju redirecty w konfiguracji serwera i w .htaccess, nic tam szczególnego nie widzę. Dla pewności wywaliłem wszystkie i uruchomiłem Apache'a tylko na porcie 80, bez HTTPS (bo wiem z doświadczenia, że to czasami kaszani działanie stron, zwłaszcza na tak antycznych CMSach jak ten). Kombinowałem z redirectami na różne sposoby, ale bez skutku. Sądzę, że to nie tu jest przyczyna problemu, bo błędne przekierowania wywalałyby wszystko, a nie tylko fragment serwisu, nieprawdaż? W logach mam nieco dziwne zapisy - w error.log nie ma nic, w access.log niby wszystko dobrze, ale referrer zawsze jest "-", zarówno w działających linkach jak i tych wywalających 404. 

 

Powiedzcie proszę, co przegapiłem/schrzaniłem lub gdzie powinienem jeszcze zajrzeć?

 

  • Like 1
Link to comment
Share on other sites

  • Manager

Zróbmy tak - wyłączy furle (friendly urls) takim zapisem w conf_global.php:

$INFO['use_friendly_urls']			=	'0';

I daj znać czy pomogło. Jeśli tak to pokaż zawartość pliku .htaccess.

 

I pytanie czy serwer obsługuje .htaccess czy może ngix - bo w przypadku tego drugiego te reguły z .htaccess trzeba "przepisać".

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Link to comment
Share on other sites

  • 2 weeks later...

Dziękuję za odpowiedź i od razu przepraszam za zwłokę - ale majówka i te sprawy :)

 

W każdym razie zrobiłem zmianę, jaką zasugerowałeś i zaczęło śmigać. Prawie - bo nie działają bezpośrednie linki typu "domena.com/index", ale mniejsza na razie o detale. Reszta wydaje się działać prawidłowo, więc ewidentnie przyczyna leży w FURLach.

 

Plik .htaccess wygląda tak:

 

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On   
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

 

Na powyższych ustawieniach strona działała na starym serwerze, na nowym nie chce. Zmieniłem więc na poniższą zawartość  podpowiedzianą w panelu sterowania pod opcją  "Use .htaccess mod_rewrite".

 

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

 

Różnica minimalna, no ale diabeł tkwi w szczegółach. Jednak nie tym razem. Opcja "URL Type" ustawiona jest na Query String. Przestawiłem eksperymentalnie na Path Info, ale nic nie pomogło (nie oczekiwałem, żeby zadziałało :)).

 

Serwer to Apache 2.4.56, mod_rewrite oczywiście aktywny. Na starym serwerze chodziło toto pod Apachem 2.2.11. Próbowałem znaleźć jakieś różnice w kompatybilności wpisów w .htaccess między tymi wersjami (wiele lat je różni), ale nieskutecznie.

 

Coś zapewne trywialnego przeoczyłem, ale nie mam bladego pojęcia co... 😕

Link to comment
Share on other sites

Posted (edited)

Jeszcze jedno przyszło mi teraz do głowy podczas kombinowania - czy takie zachowanie może mieć cokolwiek wspólnego z tym, że poprzednio strona chodziła tylko na porcie 80 (czysty HTTP, SSL nie było skonfigurowane w żaden sposób), a ja ją odpaliłem na 443 (HTTPS)? Wydaje mi się, że nie, bo wcześniej próbowałem też na samym HTTP i było tak samo. Nie widzę też nigdzie żadnych opcji konfiguracyjnych, nie licząc $INFO['board_url'] w conf_global.php - zmieniłem oczywiście z http:// na https://.

 

Ale dla pewności wolę dopytać.

 

Przepraszam za osobny post, ale nie mam opcji edytowania poprzedniego.

Edited by qwsazx
Link to comment
Share on other sites

DawPi
This post was recognized by DawPi!

qwsazx was awarded the badge 'Helpful'

Ponownie ja. Problem został rozwiązany - należało dołożyć do Apache'a moduł mod_headers. Po jego aktywowaniu wszystko zaczęło działać jak należy. Sprawdziłem też specjalnie, że po dezaktywacji modułu problem znów się pojawiał, więc przyczyna leżała właśnie w tym. Co ciekawe, stary serwer nie miał tego modułu. Zostawiam info, może się komuś przyda w przyszłości.

  • Like 1
Link to comment
Share on other sites

  • Manager

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.