Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> RewriteRule z dwoma zmiennymi (.htaccess)
ehhh0
post 9.08.2011, 22:13:57
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 9.08.2011

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


Mam taki link na swojej stronie:
test.php?zmienna1=COSTAM1&zmienna2=COSTAM2

Potrzebuję przekierować taki link na ten powyższy:
COSTAM1.ini?zmienna2=COSTAM2

Czyli ogólnie ktoś wpisuje mojastrona.pl/COSTAM1.ini?zmienna2=COSTAM2 a w .htaccess przekierowywuje mnie na:
test.php?zmienna1=COSTAM1&zmienna2=COSTAM2.

Jak to zrobić? Próbowałem już masę kodów, nie działa ;/. Ostatnio co napisałem to:

  1. RewriteEngine On
  2. RewriteRule ^(.*).ini?zmienna2=^(.*)$ test.php?zmienna1=$1&zmienna2=$2 [L]


No i nie działa. Co robię źle? Czytałem też o RewriteCond i {QUERY_STRING} (np. na tej stronie), ale nie wiem jak to zastosować... Pomoże ktoś?
Go to the top of the page
+Quote Post
erix
post 9.08.2011, 22:22:07
Post #2





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




A próbowałeś dostosować podany tam przeze mnie przykład?

Bo to jest rozwiązanie Twojego problemu.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ehhh0
post 9.08.2011, 23:22:06
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 9.08.2011

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


Próbowałem, nie wychodzi.
  1. RewriteEngine On
  2. RewriteCond %{QUERY_STRING} zmienna1=([^&;]*)
  3. RewriteCond %{QUERY_STRING} zmienna2=([^&;]*)
  4. RewriteRule . %1.ini?=zmienna2=%2 [R=301]

Takie coś zrobiłem ale kompletnie nie wiem gdzie mam wstawić, że ma przekierować na test.php (może zamiast tej kropki po RewriteRule ale jak to umieścić?). Pomożesz?
Go to the top of the page
+Quote Post
erix
post 9.08.2011, 23:38:07
Post #4





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




Poczytaj najpierw tutoriale od mod_rewrite, bo to są absolutne podstawy.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ehhh0
post 9.08.2011, 23:52:36
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 9.08.2011

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


Tak wiem - są to podstawy. Z jedną zmienną mi wszystko pięknie wychodziło. Jak dodałem drugą (w 1 poście jest jak to zrobiłem) to już nie działało. Czytałem na necie cały dzień - za chiny ludowe nie chce mi działać :/. Ja wiem, że wygląda to tak, że oczekuję gotowego kodu, ale naprawdę już nie wiem co robię źle. Szukałem na internecie, próbowałem masę przykładów i nic. Może podałbyś chociaż gdzie robię błąd? Albo nakierował?
Skoro Ty stworzyłeś ten przykład to dla Ciebie minuta roboty, a ja już siedzę przy tym którąś godzinę z kolei...
Będę zobowiązany za pomoc.
Go to the top of the page
+Quote Post
thek
post 10.08.2011, 00:20:02
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Podpowiem... Ty lepiej sobie popatrz co nam powiedziałeś, że chcesz uzyskać jako wywołanie ostateczne i porównaj z tym co w RewriteRule żeś wysmarował.
Nie uzyskasz z
RewriteRule . %1.ini?=zmienna2=%2
wzorca dla
COSTAM1.ini?zmienna2=COSTAM2

Popatrz dokładnie czemu one się nie zgadzają i zerknij, tak jak radzi erix, do dokumentacji odnośnie użycia RewriteCond. Masz drobne błędy w RewriteRule i to one Ci psują humor.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
ehhh0
post 10.08.2011, 07:24:45
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 9.08.2011

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


Ja nie wiem, albo jestem tak głupi że nie wiem albo to jest takie trudne.
Próbowałem tak:
  1. RewriteEngine On
  2. RewriteCond %{QUERY_STRING} url=([^&;]*)
  3. RewriteCond %{QUERY_STRING} start=([^&;]*)
  4. RewriteRule ^test.php$ %1.ini%2 [R=301]

Nie działa. Próbowałem tak:
  1. RewriteEngine On
  2. RewriteCond %{QUERY_STRING} url=([^&;]*)
  3. RewriteCond %{QUERY_STRING} start=([^&;]*)
  4. RewriteRule ^%2.ini%1$ test.php%1%2 [R=301]

Dalej nic. Jednak sam kod z jedną zmienną:
  1. RewriteEngine On
  2. RewriteRule ^(.*).ini$ test.php?zmienna1=$1 [L]

Śmiga bez problemu. Co robię źle? Pierwsze dwa kody myślę, że dostosowałem do przykładów - i dalej nic...
Go to the top of the page
+Quote Post
erix
post 10.08.2011, 08:49:46
Post #8





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




Bo będzie śmigać.

Cytat
[APACHE] pobierz, plaintext
  1. RewriteRule ^%2.ini%1$ test.php%1%2 [R=301]
[APACHE] pobierz, plaintext

Dlaczego poszukujesz tutaj w adresie odwołania, które nie istnieje? Zostaw lewą część konstrukcji, bo to jakbyś walił młotkiem w łapę i miał pretensje, dlaczego boli.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
thek
post 10.08.2011, 11:22:20
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Podpowiem znowu... Masz 2 możliwości:
1. Weź swój pierwszy kod pod tekstem "Próbowałem tak:" i pomyśl co jest nie tak
2. Użyj tylko jednego RewriteCond, który przechwyci nazwę pliku ini oraz zapoznaj się z flagą QSA.
To drugie trochę "na odwal się", ale skoro z jednym parametrem umiesz, a z dwoma nie to może Ci przypadnie to rozwiązanie do gustu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
ehhh0
post 11.08.2011, 09:03:35
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 9.08.2011

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


No, wreszcie rozwiązałem swój problem gdy użytkownik thek napisał coś o fladze QSA biggrin.gif. Kod:
  1. RewriteEngine On
  2. RewriteRule ^(.*).ini$ test.php?zmienna1=$1 [QSA]

Wszystko pięknie działa. Szkoda tylko, że nie wiem co robiłem wcześniej źle, ale skoro to działa to już mi nie potrzebne. Dzięki za pomoc.

Ten post edytował ehhh0 11.08.2011, 09:03:55
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 06:22