Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Access]Mod_rewrite wirtualne katalogi
patryk9200
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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.

Ten post edytował patryk9200 15.09.2009, 21:53:48
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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
Go to the top of the page
+Quote Post
Larges
post
Post #3





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Pomocne. Skorzystam również z poradnika. (IMG:style_emoticons/default/party.gif)
Go to the top of the page
+Quote Post
patryk9200
post
Post #4





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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 " / ".
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, spytam inaczej - jakieś tutoriale o mod_rewrite czytałeś?
Go to the top of the page
+Quote Post
patryk9200
post
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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ć
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pokaż jak próbujesz.
Go to the top of the page
+Quote Post
patryk9200
post
Post #8





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował patryk9200 16.09.2009, 20:33:24
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
patryk9200
post
Post #10





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kamillo1888
post
Post #11





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 22.04.2007
Skąd: Mówią, że Matrix

Ostrzeżenie: (0%)
-----


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ć....
Go to the top of the page
+Quote Post
patryk9200
post
Post #12





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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?







Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
patryk9200
post
Post #14





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 18:22