![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Od jakiegoś czasu walczę z problemem połączenia dwóch wersji php(php5 oraz php4) jako moduły na jednym apache'u - odpada możliwość robienia jednej wersji jako CGI ze względu na zmienne środowiskowe. Udało mi się po zmianie w źródłach php5 mime-type na inny zainstalować to na jednym apache'u, z tym że php5 chodzi na innym porcie i teraz chciałbym wszystkie wywołania do plików z rozszerzeniem php5 przekierować (np. za pomocą mod_proxy) na ten sam adres z tym że na port 8080 i do tego samego pliku. Czyli jak ktoś wpisze. http://www.mojastrona.pl/skrypt.php5 -> przekieruje go wewnętrznie za pomocą mod_rewrite na adres http://www.mojastrona.pl:8080/skrypt.php5 itd - http://mojastrona.pl/katalog/skrypt.php5 na http://mojastrona.pl:8080l/katalog/sktypt.php5 a jeżeli chodzi o pozozstałe skrypty, chciałbym żeby były one przetwarzane na porcie 80, wg configa dla php4. Jeżeli uda mi się to jakoś złożyć do kupy, postaram się napisać jakiegoś tutoriala jak to zrobić krok po kroku. pozdrawiam i dzięki za każdą podpowiedź anas Ps. Taki oto kod udalo mi sie uzyskac od pewnego administratora z za granicy, ktory to przekierowuje wywolania dla plikow z koncowka .php5 na inny serwer dodajac do wywlywanej domeny przedrosterk php5. Kod <IfModule mod_proxy.c>
RewriteEngine On # this condition should only match on files ending in php5 (any case) RewriteCond %{REQUEST_FILENAME} ^(.*).php5$ [NC] # this condition picks apart the host part of the URL, we need # to change www.alpha.com -> php5.alpha.com RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] # this rule modifies the request and submits as proxy RewriteRule (.*)(\.php5) http://php5.%1/$1$2 [P,NC] ProxyRequests Off </IfModule> Ten post edytował anas 3.03.2005, 17:49:28 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat - Dlaczego ustawiasz dyrektywe ProxyRequests na Off ? Tego zapisu kompletnie nie rozumiem. To jest tutaj zabieg czesciowo kosmetyczny.. nie ma wplywu na dzialanie calego tego mechanizmu, ale wylacza proxy, tak zeby powiedzmy ktos inny majacy dostep do Twojego apacha nie ustawil go sobie czasem jako proxy. Cytat - Nastepnie uruchamiasz mod_rewrite i zapisujesz warunek ze jesli zmienna srodowiskowa (bo z tego co rozumiem przez %{zmienna} odwolujemy sie do zm. srodowiskowych) rozpoczyna sie od 0 lub wiecej dowolnych znajow i konczy na .php5, to on to zapisze do zmiennej $1 uzytej w RewriteRule - parametr [NC] oznacza ze nie bedzie bral pod uwage wielkosci liter prawie dobrze.. on tego nie zapisze do $1 uzytego w RewriteRule. Substringi z RewriteCond sa zapisywane do zmiennych %N, ale do konca nie wiem jeszcze w jaki sposob (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) W kazdym razie zmienne $N w RewriteRule to sa odwolania do substringow z tej samej dyrektywy tylko ze z pierwszego parametru. Czyli jak mamy RewriteRule /(.*) http://%{HTTP_HOST}:88/$1 [P] to $1 jest odwolaniem sie do (.*) z pierwszej czesci. Cytat - i od razu zapytam czy nie lepiej byloby zapisac to o tak ^(.+).php5$ - bo to wymusi ze plik sklada sie z przynajmniej jednego lub wiecej znakow + .php5 ? Jasne, tak jest teoretycznie poprawniej, ja po prostu skopiowalem to z Twojego pierwszego posta. Aczkolwiek w tym przypadku jesli ktos poda jako requesta samo rozszerzenie to i tak takiego pliku nie bedzie, wiec czy to apache + php4 czy apache + php5 zwroci komunikat bledu to juz nie robi wielkiej roznicy. Cytat - teraz w RewriteRule - dlaczego zaczyna sie pierwszy czlon od znaku / i do czego sluzy pierwszy czlon - co w nim sprawdzasz Caly string ktory dopasowujemy w RewriteRule pochodzi bezposrednio z naglowka, czyli jak mamy request typu: Cytat GET /jakis/katalog/skrypt.php?zm=cos&zm2=cos2 HTTP/1.0 to do RewriteRule idzie cala ta sciezka, lacznie z wszelkimi parametrami (pogrubione) Caly ten czlon chcemy przekazac dalej, bo w nim nic nie zmieniamy, a slash jest tylko dla wygody.. moglem to zapisac rownie dobrze tak: RewriteRule (.*) http://%{HTTP_HOST}:88$1 [P] ale jak widzisz nic nie oddziela portu od $1, wiec postanowilem wykluczyc slasha z dopasowywania i zamiescic go recznie jako separator portu od $1. Cytat jak spelni sie warunek z RewriteCond to on stworzy ciag http://zmienna_srod_przechowujaca_wywolywa...a_z_RewriteCond i parametr [P] - aby przekazal to do mod_proxy? Znowu blisko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale to juz opisalem wczesniej.. wiec zmienna jest przekazywana nie z RewriteCond, a z pierwszego parametru RewriteRule, gdzie mamy (.*) (wlasnie to - tzn. to co zostaje do tego dopasowane, czyli wszystko - jest tam wstawiane) sie napisalem... mam nadzieje ze troche pomoglo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 23:50 |