Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Mod_rewrite i mała komplikacja ...
Forum PHP.pl > Forum > Przedszkole
majestiq
Mam linki w takim schemacie:

http://www.domena.pl/pafiledb/pafiledb.php?action=category&id=2 " title="Zobacz w manualu PHP" target="_manual po kliknieciu przechodzimy do plików znajdujacych sie w danej kategorii, tutaj linkim mają taki schemat:
http://www.domena.pl/pafiledb/pafiledb.php?action=file&id=106 " title="Zobacz w manualu PHP" target="_manual i no mozemy sobie znowu kliknac w dany link i przechodzimy dalej, w szczegoly danego pliku.

Problem polega na tym, że chciałem troszkę te linki chociaż skrócić i dodałem do .htaccess taką prostą regułę:

RewriteRule ^plikimp3$ pafiledb/pafiledb.php/$1 [L,NC]

W kodzie strony pozmieniałem odpowiednio linki i teraz mam coś takiego, analogicznie do tego co wyżej) :

http://www.domena.pl/plikimp3?action=category&id=21 po kliknieciu przechodzimy do plików znajdujacych sie w danej kategorii no i:
http://www.domena.pl/pafiledb.php?action=file&id=146 tutaj jak widać skrypt już nie tworzy poprawnych linków (z katalogiem), tylko pomija
go i link jest błędny bo do niczego nie prowadzi.

Teraz poprostu chciałbym dodać do htaccess taką regułę, żeby poprostu linki w takim formacie jak ten ostatnim czyli URI rozpoczyna się nie od katalogu (pafiledb/)
tylko od samego skryptu (pafiledb.php), czyli jak mam adres w formacie www.domena.pl/pafiledb.php$jakies_parametry zamieniało mi to na www.domena.pl/pafiledb/pafiledb.php$jakies_parametry

Myślę, że w miarę dobrze teraz wszystko wytłumaczyłem smile.gif
Bardzo proszę o pomoc.
Z góry dzięki!

Naprawdę nikt nie wie jak to zrobić ?
erix
Wie, pod warunkiem, że wysilasz się i czytasz dokumentację.

Jest taki parametr przepisywanych regułek deklarowany jako QSA i on jest rozwiązaniem Twojego problemu.
majestiq
Próbowałem jużwcześniej z QSA i też nie działa...
erix
A pokaż kod, bo jestem na 99% pewien, że regułki wtedy nie zmieniłeś. tongue.gif
majestiq
RewriteRule ^plikimp3$ pafiledb/pafiledb.php/$1 [QSA] questionmark.gif
Pilsener
Po co sobie tak utrudniasz życie? Przecież wszystko sprowadza się do tego, aby dostarczyć do silnika parametry wejściowe:
Kod
RewriteRule ([^-]*).html$ ?wejscie=$1 [L]
- wrzuć sobie cały adres do jednej zmiennej get o stałej nazwie, na początku silnika zaincluduj jakąś klasę/funkcję do parsowania adresów i tyle. Przecież gdy Ci się coś zmieni w serwisie nie będziesz ciągle poprawiał/modyfikował .htaccess.
majestiq
To co piszesz brzmi bardzo mądrze i ciekawie, ale na moim poziomie znajomości php to niestety trochę zbyt wiele.
... zresztą widzisz, że 'utrudniam sobie życie' bo inaczej na razie nie potrafie :/
Mógłbyś to jakoś prościej napisać winksmiley.jpg
Może jakiś przykład z uwzględnieniem struktury którą podałem.
erix
Cytat
Kod
RewriteRule ^plikimp3$ pafiledb/pafiledb.php/$1 [QSA]

A po co to /$1 na końcu? Masz katalog pafiledb.php, czy to jest plik?
majestiq
Rzeczywiście był błąd, powinno być tak:

  1. <?php
  2. RewriteRule ^plikimp3$ pafiledb/pafiledb.php$1 [QSA]
  3. ?>


No, ale i tak wiele to nie zmienia :/
Po kliknięciu w link następne linki dalej nie mają takiej formy jak trzeba (brak katalogu)
erix
Nie znam dokładnie skryptu, ale musisz chyba ręcznie zmodyfikować szablony generujące linki.
majestiq
Ale mi tak naprawdę chodzi tylko o 1 rzecz:

Chciałbym dodać do htaccess taką regułę, żeby poprostu linki w takim formacie jak ten ostatnim czyli URI rozpoczyna się nie od katalogu (pafiledb/)
tylko od samego skryptu (pafiledb.php), czyli jak mam adres w formacie www.domena.pl/pafiledb.php$jakies_parametry zamieniało mi to na www.domena.pl/pafiledb/pafiledb.php$jakies_parametry

I tylko tyle :-)
erix
Kod
RewriteRule ^pafiledb.php /pafiledb/pafiledb.php [QSA]

Pisane z palca.
majestiq
Ale tak nie może być, bo te linki są już wygenerowane i żeby zamieniło mi

www.domena.pl/pafiledb.php$action=viev&id=22 na
www.domena.pl/pafiledb/pafiledb.php$action=viev&id=22

to musi być ustawione przekierowanie np 301 a nie takie przepisywanie jak zaproponowałeś

Próbowałem tak:

RewriteCond %{REQUEST_URI} ^pafiledb.php$
RewriteRule (.*) pafiledb/pafiledb.php$1 [QSA]

Ale nie działa :/
erix
A dokumentację zabrali? Nie wiesz, jak ustawić przekierowanie przez rewrite'a? Przeczytaj o modyfikatorach rewrite'a, wtedy zadaj jakieś pytanie, na które nie ma jeszcze odpowiedzi.
majestiq
No ok, jak dawałem [R,301] to mi kazali dawac QSA zreszta nic i tak nie działało...
erix
Masz złą składnie tego [R,301]. Będą kazali skakać w ogień, to też skoczysz? Myśl.
majestiq
Kazali to spróbowałem tongue.gif
Tamten kod pisałem z palca.

RewriteCond %{REQUEST_URI} ^pafiledb.php$
RewriteRule (.*) pafiledb/pafiledb.php$1 [R=301,L]

I tak nie działa exclamation.gif!
Czemu questionmark.gif
erix
Kod
RewriteCond %{REQUEST_URI} pafiledb.php$
majestiq
Lipa ...
erix
Gdzie? W moim lesie? biggrin.gif

Może coś konkretniej, pokaż wszystkie regułki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.