Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

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


qwsazx

Rekomendowane odpowiedzi

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ć?

 

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 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ć".

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

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... 😕

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Edytowane przez qwsazx
Odnośnik do komentarza
Udostępnij na innych stronach

DawPi
Ten post został doceniony przez DawPi!

qwsazx otrzymał(a) odznakę 'Pomocny'

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.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 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.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.