Ukończyłem pracę nad stroną, pliki wrzuciłem na serwer - gra gitara; Strona jest widoczna w sieci, linki śmigają, wszystko się dobrze ładuje; Ale to nie wszystko, bo mały błąd w podaniu adresu w pasku przeglądarki i już moja strona błędu nie zadziała;
Dlatego też wyczytałem w Google, że trzeba odpowiednio uzupełnić plik(i) .htaccess
; Poczytałem, potestowałem i lipa - nie potrafię tego zrobić tak, aby wszystko działało; A że webmaster ze mnie gorszy niż kosmonauta - nie rozumiem jak mam te pliki porozmieszczać i co w nich wpisać... Dlatego też prosiłbym o pomoc, dlatego że nigdy wcześniej nie stawiałem żadnych stron i w ogóle nie zajmuję się webmasteringiem, więc nauka pewnych rzeczy z tą dziedziną związanych idzie mi jak krew z nosa; A stronę jak już podjąłem się zrobić, to chciałbym aby jakoś pomagała użytkownikowi w przypadku podania błędnych adresów;
Może najpierw opiszę co mam; Struktura katalogów na serwerze wygląda tak:
[public_html]
[global]
- pliki używane dla obu subdomen
[en]
- pusty katalog (strony w wersji angielskiej jeszcze nie ma - będzie w przyszłości)
[pl]
- pliki strony w wersji polskiej
Główna domena posiada dwie subdomeny - pl
dla polskiej strony i en
dla angielskiej; Katalogi utworzone zostały w tych miejscach przez menedżer w panelu klienta, więc ich nie przenosiłem; Natomiast katalog global
zawiera pliki uniwersalne, które wykorzystywane będą w dwóch wersjach językowych strony; Znajdują się tam pliki arkuszy stylów, fonty i obrazki;
W głównym katalogu public_html
znajdują się także pliki błędów: 400.htm
, 401.htm
, 403.htm
, 404.htm
i 500.htm
; Te pliki będą wykorzystywane po jakimś błędzie, np. nieodnalezieniu zasobu czy braku dostępu do niego; Także w głównym katalogu mam standardowo pusty plik .htaccess
, który trzeba uzupełnić;
Nie chcę reklamować swojej strony (żeby nie dostać bana za spam :]) więc przyjmijmy, że moja strona ma adres strona.info
; Biorąc pod uwagę stworzone dwie subdomeny, otrzymujemy dodatkowe adresy pl.strona.info
oraz en.strona.info
(we wszystkich przypadkach bez prefiksu www
);
Teraz co chciałbym uzyskać; Jeśli walnę jakąś łupotę to miejcie na uwadze, że nawet po solidnej lekturze Google - nadal jestem lamą w tym temacie;
Przede wszsytkim chciałbym sprawić, aby po nieodnalezieniu zasobu, serwer przekierowywał na moją stronę odpowiedniego błędu; W tym celu dopisałem do pliku .htaccess
wygooglowane linijki:
ErrorDocument 400 http://strona.info/400.htm
ErrorDocument 401 http://strona.info/401.htm
ErrorDocument 403 http://strona.info/403.htm
ErrorDocument 404 http://strona.info/404.htm
ErrorDocument 500 http://strona.info/500.htm
No i gra - po wykryciu błędu zostaję przekierowany na odpowiednią stronę błędu; Czego jednak bym nie chciał - jeśli użytkownik spowoduje błąd serwera, adres URL w pasku adresu przeglądarki nie powinien się zmienić na np. strona.info/404.htm
, a powinien pozostać ten błędny; Dokładnie tak samo jest na 4programmers - pojawia się strona błędu, ale URL nie jest poprawiany; Jak więc uzyskać taki efekt?
Druga sprawa to przekierowywanie użytkownika na poprawną stronę i poprawianie adresu URL;
Chciałbym uzyskać taki efekt, aby po wpisaniu adresu strony bez subdomeny, adres ten był poprawiany oraz użytkownik powinien być przekierowany na odpowiedni plik, znajdujący się w katalogu subdomeny;
Poniżej wymienione są przykłady - z lewej podany URL, a z prawej poprawiony przez oprogramowanie serwera:
-
strona.info/index.htm
->http://pl.strona.info/index.htm
(dodanie nazwy subdomeny), -
strona.info/pl/index.htm
->http://pl.strona.info/index.htm
(dodanie nazwy subdomeny oraz usunięcie nazwy katalogu subdomeny sprzed nazwy pliku), -
strona.info/pl/foo/bar/index.htm
->http://pl.strona.info/foo/bar/index.htm
(to samo, tyle że URL posiada dłuższą ścieżkę do pliku);
W tym stylu - każdorazowe dodanie prefiksuhttp://
oraz nazwy subdomenypl
przed adresem, oraz usunięcie nazwy katalogupl/
z dalszej części adresu; Jak więc to zrobić?
Ostatnia sprawa nie dotyczy może konfiguracji, a samych ścieżek w plikach strony; Zależy mi na tym, aby wszystkie ścieżki w plikach .htm
były relatywne; Już tłumacze dlaczego;
Stronę chcę utrzymywać po pierwsze na serwerze, ale także lokalnie, bez dostępu do sieci; Czyli nie chcę posiadać dwóch wersji - jednej dla serwera i jednej w wersji offline; Dlatego też wykorzystałem ścieżki względne, które działają bez problemu lokalnie i poprawnie na serwerze; Strona nie korzysta ani ze skryptów, ani z ciasteczek, więc będzie można ją otworzyć bez problemu wszędzie;
Wyczytałem w Google, że raczej nie ma problemu z używaniem względnych ścieżek na serwerze; Zresztą wrzuciłem stronę na serwer dla testów i wszystko działa poprawnie; To oczywiście nie dotyczy stron błędów, które jak wyczytałem w Google powinny mieć ścieżki bezwzględne - ot dla bezpieczeństwa;
Moje pytanie jest takie: Czy po wpisaniu reguł do pliku .htaccess
nie będą się one gryzły ze ścieżkami relatywnymi?
Z moich wczorajszych testów wynikło, że jednak będzie problem, tylko ze ścieżkami do plików z katalogu public_html/global/
, bo ich w ogóle nie chciało czytać; Dlatego też szybciutko zmieniłem we wszystkich plikach .htm
adresy do plików z tego katalogu na bezwzględne i dzięki temu były poprawnie ładowane;
Bardzo bym prosił o pomoc z uzupełnieniem tego pliku konfiguracyjnego, dlatego że po wielu próbach i przeczytaniu kilku artykułów nadal nie potrafię tego poprawnie ustawić; Korzystałem głównie z tych artykułów:
https://pomoc.home.pl/bazawiedzy/akademia/278
http://magazynt3.pl/htaccess-bez-tajemnic-sztuczki-z-serwerem-Apache/
i kilku innych; Ale nadal nie mogę się w tym w połapać i zapisać te reguły poprawnie; Byłbym bardzo wdzięczny, gdyby ktoś użyczył wiedzy w tym temacie;
PS1: Ze subdomeny en
póki co i tak nie będę korzystał, więc ewentualnie mogę usunąć jej katalog; Ważne, żeby przekierowania działały i kierowały na subdomenę pl.strona.info/*
;
PS2: W Google także wyczytałem, że roboty indeksujące bardzo nie lubią, jak serwis zezwala na podawanie adresów z prefiksem www
oraz bez niego, dlatego w przykładach celowo ich nie podawałem; Czyli trzeba by te reguły zapisać tak, aby usuwane były te prefiksy, jeśli takowe istnieją...
PS3: Jeśli jakiejś ważnej informacji nie podałem, to pytajcie śmiało o wszystko :]