Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> htaccess problem
Geston
post 9.04.2014, 11:49:06
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 9
Dołączył: 29.11.2010
Skąd: T

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


Mam oto taki pliczek htaccess

Kod
RewriteEngine on
Options -Indexes
DirectoryIndex index.php meintance.php
RewriteBase /public/
RewriteRule ^([a-z]+)/([0-9]+)/?$ $1.php?id=$2 [L]
RewriteRule ^([a-z]+)/?$ $1.php [L]
RewriteRule ^$ index.php [L]


Wszystko działa poprawnie z jednym wyjątkiem. Mam wrażenie że serwer jako taki bazowy adres przechwytuje nie katalog z ustawień serwera w którym się strona znajduje a następnie katalog "public" jak to zostało ujęte w htacces i następnie kolejne argumenty i to przepisuje, ale bazą dla serwera jest adres do ostatniego slasha z poprzedniego odwołania. Nie potrafię sobie z tym poradzić. Dla przykładu.

Mamy odnośnik na stronie href="test". Oglądając dowolną stronę, przykładowo localhost/dowolna, po kliknięciu w link jesteśmy odpowiednio przekierowywani. Jeżeli jednak oglądam stronę localhost/dowolna/123 po kliknięciu w ten sam link zostaję przekierowany do localhost/dowolna/test zamiast tak jak było to w przykładzie pierwszym.

Ten post edytował Geston 9.04.2014, 11:49:30
Go to the top of the page
+Quote Post
Turson
post 9.04.2014, 19:24:56
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jeżeli dopisuje ci adres strony z linku do aktualnej strony to wina samego linku.
Jesteś na localhost/lorem/ipsum a chcesz wejśc na localhost/aaa to link href=/aaa
Go to the top of the page
+Quote Post
Geston
post 14.04.2014, 16:20:15
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 9
Dołączył: 29.11.2010
Skąd: T

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


Obawiam się że problem jest jednak jakiś inny dziwny.
Mając kilka linków o identycznej konstrukcji:
href="index"
href="rules"
href="register"
href="login"
Czyli semantycznie nie różnią się zupełnie niczym, klikając na nie przenosi mnie do odpowiednich stron i wszystko jest ok, w pasku adresu widzę kolejno:
localhost/index
localhost/rules
localhost/login
ale...
localhost/register/
Tego nie rozumiem że tylko dla tego jednego linku dodaje ukośnik na końcu. Jedyna różnica to długość stringów, możliwe że serwer oprócz nawet pełnego linku localhost//public/register.php widzi coś więcej z przodu i przez długość linku jest problem?

Przewaliłem teraz .htaccess do katalogu public i ustawiłem directory root na ten sam katalog, oczywiście w .htaccess też RewriteBase zmieniłem na sam / (slash). Po tej akcji nie dodaje mi już do żadnego z linków z menu slasha na końcu, wszystko działa super do momentu aż odwołuje się do strony z dodatkowym parametrem jak np localhost/event/4. Not found... Gdzie link powinien być zamieniony na event.php?id=4. Owy plik istnieje a mimo to...

Możliwe są jakieś krzywe jazdy w konfiguracji serwera?

1. localhost/event działa
2. localhost/event/ też działa
3. localhost/event/4 już nie działa...
4. localhost/event/4/ działa...

Skoro opcja 1 działa bez slasha na końcu to czemu nie działa opcja 3 bez slasha :/

No i dalej do póki biegam po głównych podstronach bez parametrów wszystko gra, w momencie gdy po jakimś linku pojawi sięslash
localhost/event/
to po wybraniu opcji href="login", która bez slasha była interpretowana jak localhost/login, to w tym przypadku dostaje localhost/event/login, tak jakby base url to już nie był localhost... tylko localhost/event/...

Jeżeli mogę prosić żeby ktoś rzucił jeszcze okiem to byłbym wdzięczny, już tydzień przeszukiwania różnych for, artykułów i nic, jakby to był jakiś wyjątkowy problem.
Może szukam nie tam gdzie powinienem, dodam każde informacje których może brakować.

W skrócie jeszcze raz, wygląda to tak, jakby RewriteBase nie dopisywało do localhosta tego co jest w nim zdefiniowane, czyli jak mam "RewriteBase /strona/" to po kliknięciu w link nie otrzymuję zawsze localhost/strona/example, tylko w momencie gdy pojawiły się w url dodatkowe parametry, jak localhost/strona/example/82, to wygląda to tak jakby RewriteBase zostało nadpisane (?!) na "RewriteBase /strona/example/"... Czyli od momentu wywołania dowolnego adresu gdzie pojawia się trzeci slash po localhost...

Rozkładam ręce...
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: 27.06.2025 - 00:01