Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przepisanie które powinno zadziałać tylko raz.
Forum PHP.pl > Forum > Serwery WWW
szagi3891
Tak jak w temacie. Potrzebuje zrobić przepisanie które uruchomi się tylko raz. Chcę sobie zrobić coś na zasadzie serwerów wirtualnych lecz takich których nie trzeba konfigurować. Htaccess w zależności od tego jaka jest domena ma sam przekierować wywołanie do odpowiedniego katalogu.
A przekierowanie ma uruchomić się tylko raz dlatego że nie chcę aby mi się moduł rewrite zapętlił, czego efektem jest pojawianie się błędu 500.

RewriteCond %{ENV:skip} !yes
RewriteRule (.*) /sites/%{SERVER_NAME}/public/$1 [E=skip:yes]

Stworzyłem coś takiego jak powyżej. Ale coś jest nie tak bo za każdym razem dostaję błąd 500. Konstrukcja jest na tyle prosta że chyba ciężko by tu było coś zepsuć. Nasuwa się może komuś pomysł co w tych dwóch linijkach jest źle ? Bądź ewentualnie ma ktoś lepszy pomysł jak zmusić moduł rewrite żeby to przepisanie odbyło się wyłącznie tylko raz ?
erix
A nie lepiej to skonfigurować przez <virtualhost>...? Możesz przecież użyć maski.
szagi3891
Nie. Musiałbym mieć dostęp do httpd.conf którego nie mam. Pozostaje htaccess.
erix
No to przecież wystarczy zrobić tak, jak w wirtualnym PH: http://eriz.pcinside.pl/weblog/mod_rewrite...ac-208.html#t61

Tylko sprawdzasz HTTP_HOST, bez żadnych środowiskowych, a każdy VHost ma swój htaccess.
szagi3891
Tylko że ja chcę zrobić rozwiązanie uniwersalne. Nie chcę dopisywać przy każdym nowym hoście oraz każdej nowej domenie kolejnych wpisów w pliku htaccess ani także nie chcę tworzyć żadnych nowych plików. Dodanie nowej domeny ma się odbywać na zasadzie utworzenia tylko nowego katalogu.

/glowny/domena1.pl
/glowny/domena2.pl
/glowny/domena3.pl

Wszystkie te domeny domena1.pl, domena2.pl, domena3.pl są skierowane na katalog główny "glowny". Potrzebuje teraz wykonać tylko raz przekierowanie na określony podkatalog w zależności od server_name. Z wiadomych powodów to przekierowanie ma być wyłącznie tylko raz wykonane.

@erix - Przestań mówić ogólnikami oraz przeczytaj treść mojego tematu. Mnie interesuje wyłącznie ten konkretny przypadek, czyli jak zrobić żeby rewriterule wykonało się wyłącznie raz. RewriteCound i sprawdzenie warunków jakoś dziwnie działa (albo raczej nie działa).
erix
Cytat
RewriteCound i sprawdzenie warunków jakoś dziwnie działa (albo raczej nie działa).

Dobrze działa, tylko trzeba odpowiednio regułki skonfigurować.

A Ty zacznij działać i próbuj coś, a nie tylko narzekasz, jakby Ci ktoś jeszcze łaskę robił, że w ogóle odpisuje. Mogę i ja przestać, proszę bardzo, ale zbytniego zainteresowania tematem chyba nie ma, więc zabierz się do roboty, a nie narzekasz.

Co do uniwersalności - będzie uniwersalne, gdyż podpinasz wszystkie domeny pod jeden katalog, a gdybyś uważnie przeczytał moją zalinkowaną notkę, byś wiedział, że zmienne testowane w wyrażeniach z RewriteCond można wykorzystywać również w RewriteRule.
szagi3891
Rozwaliłeś mnie całkiem z tym narzekaniem smile.gif Plus dla Ciebie winksmiley.jpg Cieszę się że ktoś mi odpisał, ale to nie to czego poszukuję no ale Ty myślisz że to to biggrin.gif

Poszukuję sposobu aby zmusić ten moduł do tego aby konkretne przepisanie wykonało się tylko raz.

Nie 10 razy, tworząc mi pod drodze adres typu :

/glowny/domena1.pl/glowny/domena1.pl/glowny/domena1.pl/glowny/domena1.pl....../glowny/domena1.pl/obrazek.jpg
i wyrzucając w efekcie że został osiągnięty limit maksymalnej ilości przepisań i oczywiście pojawianie się błędu 500 :/

Znajdując sposób na wykonanie tylko jednego przepisania, umożliwiłoby tworzenie całkiem ciekawych htaccessów. Nic to, szukam dalej.

Ps. A propo Twojej strony, bardzo ciekawe spojrzenie na filozofię frameworków z którym się zgadzam smile.gif
ShadowD
Ja mam to napisane coś w ten sposób:

RewriteCond %{HTTP_HOST} ^www.([a-z0-9]*).pl$ [NC]
RewriteCond %{REQUEST_URI} !^/users/.*/www/$ [NC]
RewriteRule ^(.*)$ /users/%1/www/$1 [L]

Nie wiem czy działa, na szybko edytowałem by dopasować do potrzeb.
szagi3891
Pomysł naprawdę dobry. Tak też chyba zrobię w ostateczności.

Jest jeden minus takiego rozwiązania. W tym wypadku jeśli utworzę sobie jakąś domenę (domek.pl) czyli że utworzę sobie katalog /users/domek.pl/www/ to przykładowo odwołanie które przyjdzie :
domek.pl/users/mieszkanie.pl/www/ nie zostanie przekierowane. Czyli to żądanie zostanie potraktowane jak gdyby ktoś odwołał się do katalogu głównego domeny mieszkanie.pl

No i właśnie przed tą sytuacją chciałbym się ustrzec.
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.