kori 29 Zgłoś post Napisano Sierpień 15, 2015 cel: skrócenie listy domen, tylko do tych najważniejszych założenia:- dodajemy dowolną domenę, nawet nieistniejącą, np. innedomeny.pl- dodajemy mniej ważne strony jako wskaźnik domen- zawartość znajdowałyby się w folderze innedomeny.plprzykład struktury:innedomeny.pl/linki.pl innedomeny.pl/subdomeny.pl innedomeny.pl/ciekawostki.plinnedomeny.pl/moje.linki.pli tu zakładam przyjdzie z pomocą .htaccess, który powie domena linki.pl znajduje się w podfolderze "linki.pl" Udostępnij ten post Link to postu Udostępnij na innych stronach
Piotr GRD 608 Zgłoś post Napisano Sierpień 15, 2015 (edytowany) I - tak zakładam - pytasz o zawartość .htaccess?... Jeśli chcesz każdą domenę dodawać selektywnie: RewriteCond %{HTTP_HOST} ^(www\.)?linki\.pl$ RewriteCond %{REQUEST_URI} !^/linki\.pl/ RewriteRule ^(.*)$ /linki.pl/$1 Można pokusić się o coś bardziej automatycznego, w znaczeniu, że tworzysz .htaccess tylko raz, a potem już do niego nie zaglądasz, a jedynie dodajesz/usuwasz foldery (choć tu nie jestem pewien prawidłowości drugiej linijki): RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteCond %{REQUEST_URI} !^/%2/ RewriteRule ^(.*)$ /%2/$1 Stosowałem w przeszłości coś takiego właśnie na darmowym hostingu, gdzie dodatkowe domeny można było jedynie parkować na głównej, a nie dodawać jako osobne. Poza tym w podobny sposób sprawdzać też można, czy zawartość osiągana jest z adresu domena.pl/subdomena czy też subdomena.domena.pl (w przypadku np. DirectAdmin subdomeny domyślnie są w folderach głównej domeny, a więc zawartość dostępna jest pod takimi dwoma adresami, a możemy nie chcieć mieć zdublowanych adresów). Edytowano Sierpień 15, 2015 przez Piotr GRD (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Sierpień 15, 2015 Jeżeli to jakiś VPS to bym skierował default-000 na jakiś katalog i każda podpięta domena bez VHosta byłaby kierowana z automatu na ten katalog. Mniej roboty Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Sierpień 15, 2015 (edytowany) @Piotr GRD Z tego wlasnie powodu, że domeny tworzą się w folderze głównej nie robię tak subdomen. Subdomeny dodaje osobno jako domeny, ponieważ nie dotyczą one tego co strona główna, a archiwizowanie właściwej głównej domeny podówczas sprawiałoby mi kłopot ilości danych. po dodaniu wpisów .htaccessi domenie: domena.pl/s.costam.pl pokazało: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@domena.pl and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request. @Kamikadze nie to normalny hosting directadmin, ale mętlik mi się robi w domenach i chcę porobić porządkichę by na tej głównej liście domen było ok. 5 domen Edytowano Sierpień 15, 2015 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Piotr GRD 608 Zgłoś post Napisano Sierpień 15, 2015 Błąd 500 oznacza bardzo często jakiś błąd lub niedozwoloną regułę w .htaccess. Upewnij się, że nie ma jakiejś literówki, niewidocznego tabulatora itd. itp. Sprawdziłem wersję pierwszą na hostingu opartym o DirectAdmin i dla mnie działa. RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?linki\.pl$ RewriteCond %{REQUEST_URI} !^/linki\.pl/ RewriteRule ^(.*)$ /linki.pl/$1 Wersja druga faktycznie powoduje błąd 500, najwyraźniej coś pomyliłem, może później*** się tym pobawię. *** "Później" może oznaczać u mnie godziny, dni, tygodnie, a nawet miesiące i lata (prokrastynacja). Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Sierpień 15, 2015 (edytowany) No ja wlasnie tę drugą, bo fakt automatem byłoby lepiej zaraz oblukam pierwszą akurat miałem zaparkowaną http://s.domena.pl po wpisaniu adresu pokazał się index głównej domeny, nie tej dopiętej dobra już trybi: RewriteCond %{HTTP_HOST} ^(www\.)?dupa.vot\.pl$RewriteCond %{REQUEST_URI} !^/dupa.vot\.pl/RewriteRule ^(.*)$ /dupa.vot.pl/$1 na razie wystarczy, aczkolwiek automat byłby bardzo mile widziany Edytowano Sierpień 15, 2015 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Piotr GRD 608 Zgłoś post Napisano Sierpień 16, 2015 (edytowany) Faktycznie pomyliłem się w drugiej linijce drugiego przykładu. "CondPattern***" nie może zawierać "backreference***" ani żadnych zmiennych. Można sobie z tym poradzić wykorzystując ap_expr, ale jest to dostępne dopiero w Apache w wersji 2.4. Ja nie mam dostępu do takowego, żeby móc przetestować i się nauczyć jak to powinno wyglądać (a wystarczy, że jakiś jeden znak nie tak umieszczę i znów odezwiesz się, że masz "500"). Jeśli u Ciebie jest Apache 2.4, to spróbować możesz czegoś na kształt: RewriteCond expr "! %{REQUEST_URI} -strmatch '/%{HTTP_HOST}/*'" Ale nigdy tego nie używałem, nie mam jak przetestować, więc nie jestem pewien prawidłowości. (Poza tym w ten sposób inaczej trzeba by potraktować ewentualną cząstkę "www.", a dokładniej to chyba pozbyć się jej w każdym zapytaniu) Jeśli nie masz wersji 2.4, a wcześniejszą, to możesz trochę sobie "ręczny" kod uprościć. Ściśle rzecz ujmując to nie tak powinno wyglądać, ale dla Twoich zastosowań będzie jak najbardziej działać, a mniej będziesz miał do każdorazowego uzupełniania: RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteCond %{REQUEST_URI} !^/(linki\.pl|subdomeny\.pl|ciekawostki\.pl|moje\.linki\.pl|dupa\.vot\.pl)/ RewriteRule ^(.*)$ /%2/$1 Może ktoś inny ma lepszy pomysł?... Trochę na temat korzystania z mod_rewrite wiem, ale nie wszystko, więc możliwe, że coś przegapiłem. *** Przepraszam za angielskie nazewnictwo, ale zawsze czytam dokumentację po angielsku i często najzwyczajniej w świecie nie znam polskich odpowiedników. Edytowano Sierpień 16, 2015 przez Piotr GRD (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Sierpień 16, 2015 (edytowany) jedno mnie zastanawia, czemu przed każdą kropką stawiasz slash, ja z tej pierwszej wersji poczyściłem slashe i też działa RewriteCond %{HTTP_HOST} ^(www\.)?dupa.vot.pl$ RewriteCond %{REQUEST_URI} !^/dupa.vot.pl/ RewriteRule ^(.*)$ /dupa.vot.pl/$1 druga wersja faktycznie łatwiej do edycji RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteCond %{REQUEST_URI} !^/(dupa.vot.pl|costam.pl)/ RewriteRule ^(.*)$ /%2/$1 Edytowano Sierpień 16, 2015 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Piotr GRD 608 Zgłoś post Napisano Sierpień 16, 2015 (edytowany) Dla ścisłości. W wyrażeniach regularnych . (kropka) oznacza dowolny znak. Zatem sprawdzając wyrażenie regularne "costam.pl" pasować do niego będą zarówno "costam.pl" jak i "costam4pl", "costam/pl", "costamWpl", "costam&pl" itd. Jeśli chcemy sprawdzić konkretnie obecność kropki, to w wyrażeniu regularnym trzeba poprzedzić ją odwrotnym ukośnikiem. Podobnie jak w PHP czy javascript odwrotnym ukośnikiem poprzedza się cudzysłowy wewnątrz cudzysłowów itp. Wprawdzie w tym konkretnym przypadku w normalnych warunkach HTTP_HOST nigdy nie będzie miał wartości "costamXpl", więc nie ma to większego znaczenia, ale dla ścisłości i po to by wyrobić sobie właściwy nawyk również i tutaj poprzedzam kropkę odwrotnym ukośnikiem, aby kiedyś gdzieś w innym wyrażeniu regularnym, gdzie będzie to akurat istotne, o tym odwrotnym ukośniku nie zapomnieć. edycja: I nie "slash" (ukośnik) / tylko "backslash" (odwrotny ukośnik) \ Poprawiam, bo może się zdarzyć, że się z kimś nie dogadasz i jakiś kod działać nie będzie. ; ) Edytowano Sierpień 16, 2015 przez Piotr GRD (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach