Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przepisywanie adresów, wyjątki
Forum PHP.pl > Forum > Przedszkole
Cromwell
Na stronie większość linków wygląda tak:
index.php?link=dane
Część natomiast tak:
lista.php
Jest też kilka katalogów, np.
forum/

Chcę wykorzystać RewriteRule, aby ładnie przepisywać adresy. Wykorzystałem następującą formułkę w pliki .htaccess:
  1. RewriteEngine On
  2. RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?link=$1


Co do adresów z index.php?link= przepisuje świetnie, zamiast strona/index.php?link=dane mam strona/dane.
Plików z rozszerzeniem .php nie rusza, to oczywiste.
Jednak jest problem z katalogami.
Np. po podaniu strona/forum, traktuje wywala mi pustą stronę, bo skrypt traktuje to jako index.php?link=forum.

Ponieważ nie mogę przewidzieć jakie zmienne będą w ?link=zmienna, chciałem użyć czegoś takiego jak wyjątki, jednak nic nie udało mi się znaleźć.

Mógłby mi ktoś pomóc?
Najlepiej by było, gdyby wszystkie adresy z strona/index.php?link=dane przepisywał na strona/dane, takie jak strona/lista.php zamieniał na strona/lista, a katalogi zostawiał bez zamieniania.
WebCM
  1. RewriteEngine On
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?link=$1 [L,QSA]
Cromwell
Częściowo działa.

Linki strona/index.php?link=dane zamienia na strona/dane (ale jeśli się poda adres w przeglądarce strona/dane/, wtedy wyświetli całość, ale bez obrazków i css..).
Wszystkie katalogi działają poprawnia, czyli strona/forum przenosi do katalogu forum.

Zależy mi jeszcze na tym, aby po podaniu strona/dane/ traktował to tak samo jak strona/dane i nie było problemu z wyświetlaniem..

I jeszcze pytanie - jak powinna wyglądać regułka, która przepisze mi adresy z .php na te bez? czyli np. strona/banery.php na strona/banery (uwzględniając oczywiście to przepisywanie z index.php?link=)
WebCM
Dodaj wewnątrz znacznika <head> taki kod:
  1. <base href="http://pelny.adres.strony/z/katalogiem/" />

Ewentualnie podawaj wszędzie ścieżki bezwzględne:

/sciezka/strony/plik.css

Jeżeli pliki są w głównym katalogu, wtedy tylko: /plik.css

Natomiast linki w kodzie HTML musisz sam pozmieniać. Oczywiście da się to uczynić za pomocą buforowania wyjścia, ale nigdy nie ma pewności, że skrypt czegoś nie przeoczy.
Cromwell
Ok, to z tym sobie już poradzę.

Zostało tylko przepisywanie plików z lista.php na lista. Pozornie jest to proste, ale jeśli uwzględni się przepisywanie wszystkiego na strona/dane, wtedy już tak proste nie jest..
To nie musi być z wykorzystaniem instrukcji warunkowych, każdy taki link.php mogę przypisywać oddzielnie..
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.