Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [inne][HTML]htaccess pytanie
codeszan
post 16.08.2017, 20:57:57
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


Skorzystalem z generatora (Mod Rewrite Generator) znajdujacego sie:
http://www.generateit.net/mod-rewrite/index.php

Mam link: http://www.localhost:8080/system/panel/?s=test

Chcialbym osiagnac adres: http://www.localhost:8080/system/panel/s/test

Wygenerowałem cos takiego:

  1. RewriteEngine On
  2. RewriteRule ^s/([^/]*)\.html$ :8080/system/panel/?s=$1 [L]


lecz niestety nie dziala, prosil bym o prawidlowo wygenerowany wpis do pliku htaccess na którym będę mógł się potem wzorować.
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 14:11:18
Post #2





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


[APACHE] pobierz, plaintext
  1. RewriteEngine On
  2. RewriteCond %{SERVER_PORT} ^8080$
  3. RewriteCond %{QUERY_STRING} ^s=([a-zA-Z0-9]*)$
  4. RewriteRule ^system/panel/?$ www.localhost:8080/system/panel/s/%1? [L,R=301]
  5. #Zwraca "http://www.localhost:8080/system/panel/s/test"
[APACHE] pobierz, plaintext


.htaccess online test

Ten post edytował trzczy 17.08.2017, 18:51:58
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 18:24:02
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


Mógłbym prosić o wyjaśnienie jeszcze jednego:

Jeśli katalog system zmienie na np. xsystem i podmienie ten element w regule to, przestaje ona dzialac?
  1. RewriteEngine On
  2. RewriteCond %{SERVER_PORT} ^8080$
  3. RewriteCond %{QUERY_STRING} ^s=([a-zA-Z0-9]*)$
  4. RewriteRule ^xsystem/panel/?$ www.localhost:8080/xsystem/panel/s/%1? [L,R=301]


Ten post edytował codeszan 17.08.2017, 18:24:52
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 18:30:31
Post #4





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Wtedy bedzie działać w taki sposób, że adres
[APACHE] pobierz, plaintext
  1. http://www.localhost:8080/xsystem/panel/?s=test
[APACHE] pobierz, plaintext
będzie zamieniać na
[APACHE] pobierz, plaintext
  1. http://www.localhost:8080/xsystem/panel/s/test
[APACHE] pobierz, plaintext

Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 18:41:49
Post #5





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


problem w tym, że
a) nie przechodzi nawet przez tester
cool.gif nie dziala tam gdzie chcialbym tego uzyc
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 18:46:56
Post #6





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Może masz jakąś literówkę, bo tu przechodzi.
Tester
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 19:01:14
Post #7





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


Error 404

a może to kwestia jakiegoś http, czy www? (forma wpisywania) bo na to też są osobne reguly ponoc?

?s=test dziala poprawnie

Ten post edytował codeszan 17.08.2017, 19:02:45
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 19:49:01
Post #8





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Tobie chyba chodzi o zamianę w odwrotną stronę. Nie A na B, tylko B na A.
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 20:39:02
Post #9





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


mam link
localhost:8080/system/panel/s?=test -- on dziala


localhost:8080/system/panel/s/test --chce uzyskac taki efekt ?

Co ciekawe taki link dziala:

localhost:8080/system/panel/?s/test

Ten post edytował codeszan 17.08.2017, 20:36:23
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 20:56:06
Post #10





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Co to znaczy "mam link" oraz "uzyskać efekt"?
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 21:03:59
Post #11





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


Nie zbyt wiem jak to jeszcze bardziej sprecyzować ale postram się. Po kolei. Mam zainstalowany serwer lokalny - XAMPP. Korzystajac z skypa. Musialem zmienic port na inny wybralem 8080. Programy te dzialaj na jednym porcie. Standardowy "link" dla lokalnego serwera to laczenie przez ip czyli 127.0.0.1 lub localhost. Ja wykorzystywalem powyzsza nazwe.
Czyli link uzywany w przegladarce tam gdzie wpisuje sie zazwyczaj www.wp.pl czy www.google.pl jest teraz localhost:8080. Dalej na lokalnym serwerze stowrzylem projekt o nazwie "serwer". Jest on dostepny pod linkiem localhost:8080/serwer. W swoim projekcie uzylem przekierowan GET ktore wytworzyly mi adres o którym ciagle pisze i chce zmodyfikowac na tzw. przyjazny link jak to jest np. w wordpress.
Właśnie z adresu localhost:8080/serwer/panel/?s=test chce zrobic przyjazny link i to jest moj cel a efekt .. juz napisalem w poprzednim poscie.

Ten post edytował codeszan 17.08.2017, 21:04:35
Go to the top of the page
+Quote Post
viking
post 17.08.2017, 21:16:49
Post #12





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Trzczy pytał w jaki sposób te linki zapisujesz na stronie. Bo powinno być tak jak pisał w poprzednim poście o a i b.
Swoją drogą łatwiej było zmienić ustawienia skype niż przenosić serwer.

Ten post edytował viking 17.08.2017, 21:28:13


--------------------
Go to the top of the page
+Quote Post
trzczy
post 17.08.2017, 21:21:16
Post #13





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Czyli w pasku adresu przeglądarki wpisujesz www.localhost:8080/system/panel/s/test i odpala plik .../system/panel/index.php i w php jest dostępna wartość $_GET['s'] wynosząca 'test'.

Powinno zadziałać pierwsze albo drugie rozwiązanie (oba przechodzą ten test online, ale nie mam pewności):
[APACHE] pobierz, plaintext
  1. RewriteEngine On
  2. RewriteCond %{SERVER_PORT} ^8080$
  3. RewriteRule ^system/panel/s/(\w+)$ system/panel?s=$1
  4.  
  5. #wyjściowy: "http://www.localhost:8080/system/panel/s/test"
  6. #docelowy: "http://www.localhost:8080/system/panel?s=test"
[APACHE] pobierz, plaintext

[APACHE] pobierz, plaintext
  1. RewriteEngine On
  2. RewriteCond %{SERVER_PORT} ^8080$
  3. RewriteRule ^system/panel/s/(\w+)$ www.localhost:8080/system/panel?s=$1
  4.  
  5. #wyjściowy: "http://www.localhost:8080/system/panel/s/test"
  6. #docelowy: "http://www.localhost:8080/system/panel?s=test"
[APACHE] pobierz, plaintext


http://htaccess.mwl.be?share=d90e76ac-4957...12-2cfdd7c7afad
http://htaccess.mwl.be?share=5f57bb6c-9415...67-48a08809d315

A może nawet ta linia z RewriteCond jest niepotrzebna.

Ten post edytował trzczy 17.08.2017, 21:23:34
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 21:38:11
Post #14





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


Cytat
Czyli w pasku adresu przeglądarki wpisujesz www.localhost:8080/system/panel/s/test i odpala plik .../system/panel/index.php


www.localhost:8080/system/panel/s/test i przenosi na
Nie znaleziono obiektu!
Nie znaleziono żądanego URL-a na tym serwerze. Jeśli wpisałeś URL-a ręcznie, sprawdź, czy się nie pomyliłeś.
Cytat
i odpala plik .../system/panel/index.php i w php jest dostępna wartość $_GET['s'] wynosząca 'test'.


zgadza sie

Cytat
#wyjściowy: "http://www.localhost:8080/system/panel/s/test"
#docelowy: "http://www.localhost:8080/system/panel?s=test"


jeśli dobrze dozumiem to wyjsciowy to jest to co juz mam a tak nie jest mam adres
http://www.localhost:8080/system/panel?s=test
czyli odwrotność tego co tu jest
Go to the top of the page
+Quote Post
viking
post 17.08.2017, 21:48:37
Post #15





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Gdzie masz plik index.php?


--------------------
Go to the top of the page
+Quote Post
codeszan
post 17.08.2017, 22:02:10
Post #16





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


plik index.php mam w folderze system czyli glowny folder projektu -- odpowiada za front
oraz
system/panel/index.php -- odpowada za panel

regułe którą próbujemy tu utworzyc chce by dzialala w panelu


plik htaccess jest w folderze system
Go to the top of the page
+Quote Post
viking
post 17.08.2017, 22:05:03
Post #17





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


To w system/panel wrzuć .htaccess:
Kod
RewriteEngine On
RewriteRule ^s/(.*) index.php?s=$1 [NC,L]


Ten post edytował viking 17.08.2017, 22:05:13


--------------------
Go to the top of the page
+Quote Post
trzczy
post 18.08.2017, 08:39:42
Post #18





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


No to mam nadzieję, że zadziałało. Chciałem tylko dodać, że z punktu widzenia serwera oraz modułu rewrite to tu następuje zamiana adresu "system/panel/s/test" na "system/panel?s=test", czyli ten jest pierwotny albo wyjściowy: "system/panel/s/test"
Go to the top of the page
+Quote Post
codeszan
post 18.08.2017, 21:53:44
Post #19





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 2.07.2017

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


To co podał viking działa.

Po modyfikacji:

localhost:8080/system/panel/index.php?s=test
upraszcza do
localhost:8080/system/panel/test

  1. RewriteEngine On
  2. RewriteRule ^([^.]*)$ index.php?s=$1 [NC,L]



Pytanie:

co jeśli wpiszemy

1# localhost:8080/system/panel/test/ --czyli dodatkowo kreska na koncu?
2# localhost:8080/system/panel/index.php?s=test&a=bocian -- co jesli bylby drugi parametr?
3# localhost:8080/system/panel/index.php?s=test&a=bocian&id=123 --- co jesli bedzie jeszcze ruchome id?

Jak zapisać takie reguły?
Wycodząc od tego samego cały czas.
Go to the top of the page
+Quote Post
trzczy
post 18.08.2017, 22:35:38
Post #20





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Cytat(codeszan @ 18.08.2017, 22:53:44 ) *
Jak zapisać takie reguły?

To nie są reguły. Jeśli pytasz o regułę, to powinieneś napisać, że coś zamienia się na coś.
Np. 'system.panel/s/test' zamienia się na 'system.panel?s=test'

Najlepiej podać kilka przykładów zamiany.

Jeśli idzie o to, jak w regexie ująć fakt, że adres kończy się lub nie kończy ukośnikiem, to można to zapisać tak
[APACHE] pobierz, plaintext
  1. /?
[APACHE] pobierz, plaintext


Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 9.07.2025 - 04:50