Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Access]Mod_rewrite wirtualne katalogi
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Jak za pomocą Mod_rewrite zrobić że jeśli ktoś wywoła stronę używając do tego np. takiego adresu http://moja_strona.pl/coś/index.php?id=1
i tam gdzie jest to coś to mogło by być cokolwiek innego bez dodawania kolejnej reguły do htaccess, ale tak żeby to działało tylko do plików np. php, inc, fnc.
Pliki były by w głównym katalogu i to do nich by odnosiło a odpowiedni skrypt w PHP przeparsował by url i jeśli istnieje zawartość dla wirtualnego katalogu "coś" to by ją wyświetliło.
erix
Cytat
Jak za pomocą Mod_rewrite zrobić że jeśli ktoś wywoła stronę używając do tego np. takiego adresu http://moja_strona.pl/coś/index.php?id=1
i tam gdzie jest to coś to mogło by być cokolwiek innego bez dodawania kolejnej reguły do htaccess, ale tak żeby to działało tylko do plików np. php, inc, fnc.

Ktoś coś na coś. A teraz napisz po polsku.

I przeczytaj najpierw: http://eriz.pcinside.pl/weblog/mod_rewrite...ac-208.html#t71
Larges
Pomocne. Skorzystam również z poradnika. party.gif
patryk9200
Może jeszcze raz wyjaśnię bo namieszałem.
Mam stronę http://moja.pl/ .
Zbudowałem jeden skrypt i chcę go wykorzystać również w wirtualnych katalogach.
Bezpośrednie wpisanie takiego wirtualnego podkatalogu do .htaccess odpada, chociaż by dlatego że takie katalogi są tworzone przez PHP.
Tzn. ktoś chce dodać nowy dział na stronę np. "sekretariat" to wtedy zapisuję do bazy danych, że taki dział powstał i teraz chcę aby do takich działów można było wchodzić tak: http://moja.pl/nazwa dzialu/ .
Potem PHP odczytuje z jakiego podkatalogu dostano się na stronę i sprawdza czy taki podkatalog jest zarejestrowany w bazie, jeśli tak to wyświetla odpowiednią zawartość. mam taki problem, że nie mogło by to działać do prawdziwych podkatalogów tak żeby np. grafikę można było pobierać. Jest też taki problem, że musza działać dane przesłane metodą $_GET. Próbowałem sam zrobić ale nic nie wyszło próbowałem też wykorzystać ErrorDocument 404 ale nie interpretuje tego co jest po " / ".
erix
Ok, spytam inaczej - jakieś tutoriale o mod_rewrite czytałeś?
patryk9200
Cytat(erix @ 16.09.2009, 18:47:26 ) *
Ok, spytam inaczej - jakieś tutoriale o mod_rewrite czytałeś?

tak wiele, ale i tak niewiele zrozumiałem, próbowałem już z 20 sposobów i nic mi nie zadziałało... a mod_rewrite działa, muszę ja coś źle robić
erix
Pokaż jak próbujesz.
patryk9200
Cytat(erix @ 16.09.2009, 20:51:30 ) *
Pokaż jak próbujesz.


np. tak:
Options FollowSymLinks
RewriteEngine On


# dla błędu 404 nie znaleziono pliku
ErrorDocument 404 /new/{REQUEST_URI}

jak nie działa to robię na nowo więc poprzednich za bardzo nie pokaże...
można to jakoś z rewrite rule połączyć?


albo zastąpić?
erix
ErrorDocument nie ma nic wspólnego z mod_rewrite. Z tego, co pamiętam, to ED musi być plikiem statycznym.

Cytat
można to jakoś z rewrite rule połączyć?
albo zastąpić?

Właśnie dlatego pytałem o tutoriale.
patryk9200
ja mam też coś takiego:
# dla błędu 500 wewnętrzny błąd serwera
ErrorDocument 500 /new/index.php?error=500

# dla błędu 401 wymagana autoryzacja
ErrorDocument 401 /new/index.php?error=401

# dla błędu 403 dostęp zabroniony
ErrorDocument 403 /new/index.php?error=403

# dla błędu 400 niepoprawne żądanie
ErrorDocument 400 /new/index.php?error=400


i działa znakomicie, jeśli chodzi o mod_rewrite tez coś tam naskrobać próbowałem ale nic nie wyszło
kamillo1888
Jezeli wszystko masz po stronie PHP to zrób router w PHPie i działaj na nim... bo z tego co piszesz wynika, że wszystko jest wirtualne a coś jest z czymś - odnośnie routerów PHP znajdziesz informacje i gotowe pliki na tym forum. Nic tylko szukać....
patryk9200
Cytat(kamillo1888 @ 16.09.2009, 23:32:16 ) *
Jezeli wszystko masz po stronie PHP to zrób router w PHPie i działaj na nim... bo z tego co piszesz wynika, że wszystko jest wirtualne a coś jest z czymś - odnośnie routerów PHP znajdziesz informacje i gotowe pliki na tym forum. Nic tylko szukać....


a na jakiej zasadzie to działa? bo nie może przekierowywać, a czy tablice POST i GET też przekazuje?
znalazłem wiele routerów w PHP ale żaden nie odpowiada moim wymaganiom
jedyne co potzebuje to żeby przekazywał tablice i otwierał plik wybrany w ścieżce.... resztę mam zrobioną.

powiedzmy, że w .htaccess
będę miał:
# dla błędu 404 nie znaleziono pliku
ErrorDocument 404 /new/router.php

# dla błędu 500 wewnętrzny błąd serwera
ErrorDocument 500 /new/index.php?error=500

# dla błędu 401 wymagana autoryzacja
ErrorDocument 401 /new/index.php?error=401

# dla błędu 403 dostęp zabroniony
ErrorDocument 403 /new/index.php?error=403

# dla błędu 400 niepoprawne żądanie
ErrorDocument 400 /new/index.php?error=400
skoro tak nie szło przekazać tablicy post to jak to w routerze zrobie?







erix
Cytat
a na jakiej zasadzie to działa? bo nie może przekierowywać, a czy tablice POST i GET też przekazuje?
znalazłem wiele routerów w PHP ale żaden nie odpowiada moim wymaganiom

To znaczy?

Nie zapętlaj się, opisz szczegółowo te wymagania.
patryk9200
Cytat(erix @ 21.09.2009, 11:20:14 ) *
To znaczy?

Nie zapętlaj się, opisz szczegółowo te wymagania.


sorry, że tak puźno odpowiadam ale mnie w kraju nie było;-)
Jeśli chodzi o wymagania to muszę zrobić coś takiego, że chcę dać możliwość tworzenia własnych stron wykorzystując tylko 1 system CMS prze zemnie pisany który pozwalał by wyświetlić zawartość zależną od wirtualnego katalogu użytego do wejścia na stronę.
Czyli mam np. kilku użytkowników którzy zakładają sobie strony dodając dane o ich konfiguracji do bazy.
Powiedzmy, ze mam użytkowników a,b,c i teraz chcę aby każdy mógł wejść na swoją stronę używając takiego adresu:
http://mojastrona.pl/a/, http://mojastrona.pl/b/, http://mojastrona.pl/c/, tylko, że te dane nie mogą być zapisywane w htaccess.
Identyfikacja strony polegała by na sprawdzeniu czy strona o podanym adresie istnieje i jeśli tak wyswietli tą stronę, jeśli nie to wyświetli stronę błędu. Chodzi mi tylko o stworzenie routera który przekazywał by dane przesłane z dowolnego wirtualnego adresu do głównego CMS'a z tym, że musiałby uwzględniać również wywołane skrypty tzn. jeśli bym miał np. http://mojastrona.pl/a/user.php?id=1 to żeby zadziałało jak wywołanie po prostu http://mojastrona.pl/user.php?id=1.







ujmę to jeszcze jaśniej.... chodzi mi o przekierowanie zapytania do głównego katalogu a nie do wirtualnych użytych w adresie.

jak zrobić dyrektywę w htaccess która zrobi coś takiego:

RewriteEngine on
RewriteRule ^$zmienna1/$zmienna2?$ $zmienna2 [L]
tzn. pobierze adres, wirtualny katalog to $zmienna1, zapytanie to $zmienna2 i jak zrobić żeby do zapytanie kierowała do głównego katalogu a nie wirtualnego? $zmienna1 będzie zbudowana tylko z liter i cyfr natomiast $zmienna2 z tego wszystkiego co mogą mieć w sobie dane przesyłane metodą GET.

jeszcze mi wpadło, że może w htaccess da się odcinać ścieżki katalogów? i może można by było to kierować do głównego?

zrobiłem coś takiego:
RewriteRule ^(.*)$ http://zs4.tychy.edu.pl/new/%{REQUEST_FILE...%{QUERY_STRING} [L]
i gdy wpiszę np.http://zs4.tychy.edu.pl/new/w/test.php?wp=r
to przekierowuje mnie pod taki adres:
http://zs4.tychy.edu.pl/new//home/zs4tychy/ftp/new/home?wp=r
jak zrobić żeby adres końcowy wyglądał tak:
http://zs4.tychy.edu.pl/new/test.php?wp=r

o coś takiego mi chodzi tylko nie wiem jak zrobić żeby to nie było w formie przekierowania, żeby adres pozostawał pierwotny...



dobra już sobie poradziłem z tym.
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.