Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> .htaccess i pusty GET
jacek21
post 24.04.2013, 15:09:41
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Witam,

W ramach bliższego zapoznania się z .htaccess postanowiłem zobaczyć z czym to się je, lecz już na samym początku klapa.

.htaccess
Kod
RewriteEngine On
RewriteBase /
#...
DirectoryIndex index.php
RewriteRule ^/?(.*)/(.*)/$ index.php?include=$1&d=$2 [NC,QSA,L]


index.php
Kod
[...]
<base href='http://localhost/darkraven/'></base>
#przykładowy link:
<a href="index.php/yes/loguj" alt='aa'>loguj</a>
#standardowo link wyglada podobnie jak w .htaccess, ale napisze:
<a hred='index.php?include=yes&d=loguj></a>

<?php
print_r($_GET); // Array();
?>
[..]


Powiecie mi dlaczego nie istnieje get ?
Go to the top of the page
+Quote Post
sowiq
post 24.04.2013, 15:15:53
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


To zależy pod jaki URL wchodzisz. Twoja reguła w .htaccess mówi, że nadpisane mają być adresy wyglądające tak: (tutaj coś lub nic)/(tutaj coś lub nic)/. W najprostszej postaci wyglądał by on tak: //, bo slashe są u Ciebie wymagane.
Go to the top of the page
+Quote Post
jacek21
post 24.04.2013, 15:18:42
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


adres jest taki: http://localhost/testhtaccess/index.php/yes/loguj
Go to the top of the page
+Quote Post
sowiq
post 24.04.2013, 15:23:33
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Ten adres nie jest zgodny z Twoją regułą, bo /$ mówi, że na końcu ma być slash ($ oznacza koniec ciągu). Spróbuj /?$ albo zmień URL na http://localhost/testhtaccess/index.php/yes/loguj/ (slash na końcu). No i usuń z URL tę część: index.php/, bo przekierowanie na ten plik załatwia reguła z .htaccess.
Go to the top of the page
+Quote Post
nospor
post 24.04.2013, 15:23:37
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No, a ma byc taki:
: http://localhost/testhtaccess/yes/loguj

przenosze


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sowiq
post 24.04.2013, 15:28:21
Post #6





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(nospor @ 24.04.2013, 16:23:37 ) *

Jednak jak dla mnie chodzi tutaj o slash na końcu. W regule (.*)/ zmieści się również bez problemu index.php/yes/. Jedyne co nie pasuje to brakujący na końcu slash wink.gif
Go to the top of the page
+Quote Post
jacek21
post 24.04.2013, 17:17:55
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


a właśnie jak zmienie na link, bez index.php wywala info webserv'a, że został poprawnie zainstalowany...

a i dlaczego jak zmienie na:

/?$ or $ - gubi mi css'a


co jeszcze zauważyłem jak mama w pliku z menu link: protokół://host/folder/plik.php/
i jak w .htaccess dam bez '/' na końcu css działa a gdy zmienie w pliku z menu link na protokół://host/folder/plik.php już nie ma css'a nie ogarniam już tego

Ten post edytował jacek21 24.04.2013, 18:34:54
Go to the top of the page
+Quote Post
sowiq
post 24.04.2013, 21:46:51
Post #8





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Kolego, wkleję Ci hasła, poszukaj sobie sam odpowiedzi.

Cytat(jacek21 @ 24.04.2013, 18:17:55 ) *
a właśnie jak zmienie na link, bez index.php wywala info webserv'a, że został poprawnie zainstalowany...

-> RewriteBase

Cytat(jacek21 @ 24.04.2013, 18:17:55 ) *
a i dlaczego jak zmienie na:
/?$ or $ - gubi mi css'a

Widocznie ścieżka do CSS pasuje do podanej przez Ciebie reguły i zapytanie jest wysyłane do pliku index.php zamiast style.css. Musisz dodać warunek o istnieniu pliku - sprawdź sobie w którym miejscu to wstawić:
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d



Cytat(jacek21 @ 24.04.2013, 18:17:55 ) *
co jeszcze zauważyłem jak mama w pliku z menu link: protokół://host/folder/plik.php/
i jak w .htaccess dam bez '/' na końcu css działa a gdy zmienie w pliku z menu link na protokół://host/folder/plik.php już nie ma css'a nie ogarniam już tego

Zerknij wyżej.
Go to the top of the page
+Quote Post
jacek21
post 25.04.2013, 09:56:35
Post #9





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Znalazłem taki oto temat: http://forum.php.pl/lofiversion/index.php/t186300.html
no i tak się składa, że piszą tam iż base url załatwia sprawę a ja go mam(patrz 1 post).

nie rozumiem dlaczego regułka z /$ działa poprawnie a ta która wymaga lub nie(/?) czy też bez '/'($) już nie działa.. i brakuje css'a
użycie rewritecond mi nie pomogło :/

zmieniłem nawet ścieżkę do css'a na bezwzględną i nic nie dało, usunąłem base też nic.. coś musi być źle w .htaccess'ie
jeszcze raz pokażę jak wygląda plik:
Kod

RewriteEngine On
RewriteBase /testhtaccess/
#....
DirectoryIndex index.php
RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L] -przy takim linku wszystko działa
RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L]


wiem, że ten '/' na końcu to małe uniedogodnienie, ale muszę się dowiedzieć o co chodzi..

jeszcze tak na wszelki wypadek base i href do css'a

Kod
<base href='http://localhost/testhtaccess/'></base>

<link rel="stylesheet" type="text/css" href="/css/style.css" />


Ten post edytował jacek21 25.04.2013, 10:11:36
Go to the top of the page
+Quote Post
sowiq
post 25.04.2013, 11:25:19
Post #10





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Wklej cały .htaccess, który masz w swoim projekcie. Jeśli to to, co widać na górze, to nie ma tam żadnego RewriteCond.

Ten post edytował sowiq 25.04.2013, 11:25:54
Go to the top of the page
+Quote Post
jacek21
post 25.04.2013, 13:11:03
Post #11





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


No cały, nie ma rewriteCond bo usunąłem, gdyż nie dawał żadnych efektów..
ale już doklejam aktualnie to wygląda tak:

Kod
RewriteEngine On
RewriteBase /darkraven/
#dodaj jeszcze plik z błedem
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L]
RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L]


no i teraz nie czyta css'a czy jes '/' czy tez go nie ma
Go to the top of the page
+Quote Post
sowiq
post 25.04.2013, 13:34:51
Post #12





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Spróbuj tak, powinno działać:

Kod
DirectoryIndex index.php

RewriteEngine On
RewriteBase /darkraven/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* - [PT,L]

RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L]
RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L]


I zachowaj trochę konsekwencji, bo w .htaccess masz: RewriteBase /darkraven/, a w HTML: <base href='http://localhost/testhtaccess/'></base>.
Go to the top of the page
+Quote Post
jacek21
post 25.04.2013, 13:48:06
Post #13





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


no bo zmieniłem miejsce pracy smile.gif
co do kodu jeśli wchodzę w katalog główny nie ma css'a a gdy usiłuję wejść w jakiś dział błąd 404 ;/
Go to the top of the page
+Quote Post
sowiq
post 25.04.2013, 14:13:51
Post #14





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Kolego, ja jestem chętny do pomagania innym, ale też wykaż odrobinę więcej zainteresowania. Złap jakiś pierwszy lepszy kurs podstaw mod_rewrite i poczytaj. Bo to wygląda trochę tak, że Ty piszesz jakie są objawy (nawet nie podajesz pełnych informacji np. co do URL pod jaki wchodzisz) i oczekujesz że jakaś wróżka poda Ci na tacy gotowe rozwiązanie.

Poczytaj na początek chociażby to: http://bartosz.stasiurka.salon404.pl/post/...urs-mod-rewrite
Go to the top of the page
+Quote Post
jacek21
post 25.04.2013, 15:11:00
Post #15





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Nie jest tak, pytając niczego nie oczekuje jedynie mam nadzieję, że ktoś coś podpowie, nie liczę na to, że ktoś mi da gotowca czy też nawet, że ktoś w ogóle odpisze..
Przeczytałem już kilka kursów, ale brak mi doświadczenia z pracą w .htaccess'ie. a trudno go nabrać skoro kombinuję jak mogę, przeszukałem już pół google i do czego bym się nie zastosował wychodzi to samo.

Podaję objawy, piszę co się dzieje, co zmieniam, podaje linki cały czas opieram się na 2 i tych samych wersjach linków:
<a hre='yes/ogloszenia'></a> czyli: http://localhost/darkraven/yes/ogloszenia
<a hre='yes/ogloszenia/'></a> czyli: http://localhost/darkraven/yes/ogloszenia/

ponieważ cały czas próbuje uzyskać ten sam efekt, żeby wersja linku pierwszego również działał, w linkach nic nie zmieniam bo co ja tam mogę zmienić jeśli chodzi mi jedynie o slash'a na końcu ?

Przepraszam, ale w ogóle nie wiem dlaczego masz do mnie pretensje ? co ja mogę więcej napisać ? jeśli brakuje ci jakiś informacji i chcesz pomóc to zadaj pytanie a nie oskarżaj mnie, że w ogóle nie wykazuje żadnego zainteresowania bo tak nie jest, nie będę przecież pisał tutaj wszystkiego co robię bo jaki to ma cel ?
Go to the top of the page
+Quote Post
sowiq
post 25.04.2013, 15:41:27
Post #16





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(jacek21 @ 25.04.2013, 16:11:00 ) *
Przepraszam, ale w ogóle nie wiem dlaczego masz do mnie pretensje ?

Kolego, nie mam do nikogo żadnych pretensji. Po prostu odniosłem wrażenie, że wklejasz sobie rozwiązanie i na forum piszesz, że coś nie działa, bez żadnych szczegółów. Jeśli tak nie jest, to przepraszam.

Wracając do rzeczy - robisz zbyt ogólne wyrażenia regularne. Do takiego wzorca: /(.*)/ będzie pasowało wszystko to: /foo/, /foo-bar/, /foo/bar/baz/, //. Kropka oznacza dowolny znak, gwiazdka dowolną ilość powtórzeń (również zero). Dlatego Twoje reguły mieszają się między sobą.

Zamiast /(.*)/, dużo lepszym pomysłem jest dawać: /([^/]+)/, czyli jeden lub więcej znaków różnych od / otoczonych slashami. Taki wzorzecz będzie pasował do /foo/ i /foo-bar/, ale do /foo/bar/baz/ i // już nie.

Zakładając, że będziesz miał dwa typy adresów:
- /yes/ogloszenia
- /no/ogloszenia

powinieneś zrobić taką regułę:
Kod
RewriteRule ^(yes|no)/([^/]+)/?$ index.php?include=$1&d=$2 [NC,L]


Do tego wszystkie (.*) pozamieniać na podane wcześniej ([^/]+). Warunku na początkowy slash możesz nie pisać, bo i tak nie jest nigdy dodawany. Końcowy - owszem.

Odpaliłem i sprawdziłem. U mnie wszystko działa. Jeśli u Ciebie nie chce, to znaczy, że Twój problem leży gdzie indziej.
Kod
DirectoryIndex index.php

RewriteEngine On
RewriteBase /darkraven/

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [PT,L]

RewriteRule ^([^/]+)/([^/]+)/([0-9])/?$ index.php?include=$1&d=$2&id=$3 [NC,L]
RewriteRule ^(yes|no)/([^/]+)/?$ index.php?include=$1&d=$2 [NC,L]

Pozdrawiam.
Go to the top of the page
+Quote Post
jacek21
post 25.04.2013, 16:15:40
Post #17





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Przed wejściem na forum też zmieniłem wyrażenie regularne na:

Kod
RewriteRule ^([a-z]+)/([a-z]+)/([0-9])/?$ index.php?include=$1&d=$2&id=$3 [NC,L]
RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?include=$1&d=$2 [NC,L]


i zadziałało smile.gif Dziękuje bardzo za wszelką pomoc i stracone nerwy(przez te niedomówienia).
Oraz za wyjaśnienie przy okazji dlaczego (.*) jest złym pomysłem ^^

E: dużo czasu poświęciłem na tą 'zagadkę', ale jakby nie to, to pewnie nie poświęciłbym tyle czasu na .htaccess'a a przez to ominąłbym wiele ciekawych artykułów..

pozdrawiam

Ten post edytował jacek21 25.04.2013, 16:17:44
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: 20.07.2025 - 14:13