Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: .htaccess
Forum PHP.pl > Forum > PHP
kukimax
Witam,
Jak zrobić w pliku: .htaccess coś takiego żeby podstawiał wpisaną subdomenę oraz wszystko to co jest napisane za domeną jako dwie zmienne np:

Ktoś wchodzi na adres:
http://COS.nazwa.pl/plik.html

i uruchamia to plik:
index.php?subdomena=COS&link=plik.html

Z góry dzięki za odpowiedź.
cycofiasz
Musisz najpierw włączyć wildcard DNS na serwerze. Następnie możesz spróbować użyć takiego htaccess:

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymLinks
  3. Options +Indexes
  4. RewriteEngine On
  5. RewriteBase /
  6. RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
  7. RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
  8. RewriteRule (.*) %2/$1 [L]
  9. </IfModule>
kukimax
Na dole zmieniłem na to:
  1. RewriteRule (.*) index.php?subdomena=%2&link=$1 [L]


i jak ktos wejdzie na adres: COS.nazwa.pl
to wykonuje się: index.php?subdomena=COS&link=index.php

a jak wejdzie się na adres: COS.nazwa.pl/tekst.html
to wykonuje się: index.php?subdomena=COS&link=index.php

a jak wejdzie się na adres: nazwa.pl/tekst.html
to serwer wywala błąd 404

Czyli to co będzie za domeną to nie działa, co może być nie tak?

Nikt nie wie jak to powinno wyglądać żeby działało?
Czy darować sobie plik .htaccess i zrobić to w php?
erix
A co masz w error_log? Zawsze jak jest wywalany 404, to wstawiana jest tam ścieżka, której demon nie znalazł (rzeczywista, nie URL).
kukimax
Sprawdziłem logi błąd 404 wyświetla się dlatego że jak się wpisze coś za domeną np. http://nazwa.pl/tekst.html to szuka pliku: tekst.html na serwerze którego nie ma
erix
Nie streszczaj, tylko wklej tę nieszczęsną linijkę...
kukimax
Dla adresu: http://nazwa.com/tekst.html

Wyświetla taki błąd:
  1. [Wed Jul 13 11:45:02 2011] [error] [client **.**.***.***] File does not exist: /home/*******/ftp/**********/tekst.html


Część danych musiałem ukryć ale odwołuje się do folderu do którego przekierowuje domena.
erix
A cały htaccess pokaż.
kukimax
  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymLinks
  3. Options +Indexes
  4. RewriteEngine On
  5. RewriteBase /
  6. RewriteCond %{HTTP_HOST} !www.*****.com$ [NC]
  7. RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).*****.com [NC]
  8. RewriteRule (.*) index.php?subdomena=%2&link=$1 [L]
  9. </IfModule>
  10.  

Tam gdzie jest ***** jest oczywiscie domena


Natomiast plik index.php wyglada na chwile obecna tak zebym wiedzial ze dobrze $_GET podstawia
  1. <?
  2. foreach($_GET as $key => $value) {
  3. ".$key." => ".$value;
  4. }
  5. ?>
erix
A czy jak wpiszesz URL bez www, to czy masz kropkę przed domeną? tongue.gif
kukimax
Jak wpisuje adres nazwa.com to sam dodaje mi www. z przodu chociaż ze niepotrzebnie.

Przykłady:

Przykład 1:
odpalam stronę:
nazwa.com
zamienia mi to na www.nazwa.com
brak jakichkolwiek zmiennych

Przykład 2:
odpalam stronę:
cos.nazwa.com
nie dodaje mi to www. przed domena
zmienne:
subdomena=cos - DOBRZE
link=index.php - ZLE (nic tu nie powinno być)

Przykład 3:
odpalam stronę:
cos.nazwa.com/tekst.html
nie dodaje mi to www. przed domena
zmienne:
subdomena=cos - DOBRZE
link=index.php - ZLE (powinna być: tekst.html)

Przykład 4:
odpalam stronę:
nazwa.com/tekst.html
nie dodaje mi to www. przed domena
brak jakichkolwiek zmiennych
BŁĄD 404 File Not Found : Plik nie istnieje
erix
A nie masz przypadkiem w kodzie czegoś od przekierowania?

Niektóre skrypty tak robią, że przekierowują w zależności od tego, jaką domenę się ustali. W regułkach nic nie widzę czegoś przekierowującego.

Cytat
link=index.php - ZLE (nic tu nie powinno być)

Przejrzyj zawartość tablicy $_SERVER, bo może nie tu tkwi błąd.
kukimax
Co do $_SERVER to trochę mnie takie coś zdziwiło dla adresu http://cos.nazwa.com/tekst.html:
[REDIRECT_QUERY_STRING] => subdomena=cos&link=tekst.html
[QUERY_STRING] => subdomena=cos&link=index.php

mam tam szukać czegoś konkretnego?

Mam jeszcze 1 pytanie co do wildcard DNS, serwer mam w nazwa.pl a domenę w ovh.pl
w ustawieniach DNS na ovh mam takie ustawienia:

pole: mojadomena.com typ: A adres docelowy: ***.***.***.***
pole: www.mojadomena.com typ: CNAME adres docelowy: mojadomena.com
pole: *.mojadomena.com typ: A adres docelowy: ***.***.***.***

Dobrze to jest ustawione, przypadkiem nie powinienem usunąć tego pola: www.mojadomena.com?
erix
Cytat
mam tam szukać czegoś konkretnego?

Napisałem, przekierowania.

Cytat
Dobrze to jest ustawione, przypadkiem nie powinienem usunąć tego pola: www.mojadomena.com?

Jeśli oba wskazują na tego samego hosta, to w sumie nie ma sensu - jedynie dla znikomo lepszej wydajności, bo masz mniej wpisów. Na działanie skryptu to nie ma wpływu, bo jeśli problem jest w skrypcie, to znaczy, że nazwa jest prawidłowo rozwiązywana przez DNS.


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.