Forum.Legalne.info: [htaccess] Mod Rewrite - Forum.Legalne.info

Skocz do zawartości

Otwarty

Ikona Shoutbox

    Rozszerz pole shoutboxa

Ikona Zaloguj się na forum

    • Login:
    • Hasło:


    Zapamiętaj mnie
Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

[htaccess] Mod Rewrite

#1 Użytkownik jest niedostępny   softfusion 

  • Nowicjusz
  • Grupa: Użytkownicy
  • Postów: 1
  • Dołączył: 11-October 08

Napisany 11 October 2008 - 11:02 AM

softfusion.pl/Rewrite
Jest to tutorial dla osób, które nigdy nie miały z tym styczności.
Zacznijmy od tego do czego służy ten mod.

$open=$_GET['id'].'.php';
If (is_file($open) && isset($_GET['id']))
include($open);

Jest to najprostsza forma otwierania podstron w php, zwykle umieszczana w index.php, bez żadnych zabezpieczeń, dlatego nie zalecana, ale wystarczająca do tutorialu.

W linku piszemy ...href=’index.php?id=omnie’ ...OMNIE

I teraz następuje dołączenie .php i otwierana jest strona omnie.php. Proste.


Mod rewrite nie zmienia linków w oknie przeglądarki, on zmienia faktycznie wszystkie linki na stronie i podstronach, czyli np.
... link rel="stylesheet" type="text/css" href="style.css" ...
... img src="../grafika/sufinka.jpg"...
Oczywiście jeśli ustawimy, żeby zmieniał.

Można sobie ustawić wzamian: ...href=’O_mnie’...OMNIE, co spowoduje, że w oknie przeglądarki pojawi się http://softfusion.pl/O_mnie zamiast http://softfusion.pl/ndex.php?id=omnie , po kliknięciu w link OMNIE.
Rewrite gdy wyłapie ciąg znaków ’O_mnie’ zamieni na ciąg znaków ’index.php?id=omnie’.
Zanim omówię bardziej skomplikowane formuły w rewrite, przykład jak uruchomić ten mod.
Musimy mieć konto hostingowe, które udostępnia moduł rewrite np. netarteria.pl i teraz tworzymy w katalogu domeny, gdzie mamy główny plik index.php np. httpdocs
Plik .htaccess z zawartością
RewriteEngine On
Należy pamiętać, że spacja oddziela części polecenia.

RewriteRule ^O_mnie$ index.php?id=omnie

Rewrite jest zbudowany na wyrażeniach regularnych.
Rewrite [ciąg znaków, które ma wyłapać] [na jaki ciąg znaków ma zamienić]

^ początek ciągu –czyli pod ^ala łapie się
alalasds
ala54353,..,”:|!@#@#$%#
alage345.,-+rgreg
ala

$ koniec ciągu –czyli pod ala$ łapie się
efsdfsdfsala
=-09-065456/,./ala
ala
Natomiast pod ^ala$ łapie się tylko ala

Załóżmy, że mamy pliki 11.php 12.php 13.php 21.php 22.php 55.php
Nie będziemy pisać dla każdego z nich osobnego ciągu do wyłapania, robimy coś takiego

RewriteRule ^index-([1-9][1-9])$ index.php?id=$1 [L]

Piszemy href=’index-21’ i dostajemy po zmianie przez rewrite index.php?id=21.
Zamiast w oknie przeglądarki http://softfusion.pl/index.php?id=21
Dostaniemy http://softfusion.pl/index-21.
‘^index-‘ – to jest stała fraza.
([1-9][1-9]) –oznacza zamień taki ciąg liczb, żeby pierwsza była z zakresu od 1 do 9 i druga była z zakresu od 1 do 9, ' () ' nawiasy służą do grupowania tak aby
$1 –czyli zmienna zawierała to co wyłapie ów zakres
Gdyby było ([1-3])([1-8]) to zmienna $1 wyłapałaby liczby z zakresy 1-3 a $2 liczby z zakresu 1-8.

Dyrektywa [L] oznacza, nie przetwarzaj dalej już po dopasowanie reguły do
linku.

Kilka porad:

RewriteRule yo http://softfusion.pl/

Spowoduje, że w każdym linku, nawet wczytywanego zdjęcia czy tła w arkuszach stylów, gdzie będzie w linku słowo yo np. wyglad/takyono/tlo.png spowoduje przekierowanie

RewriteRule . http://softfusion.pl/

Spowoduje przekierowanie niezależnie od wszystkiego, gdyż ‘.’ zastępuje dowolny znak.

Warunki:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

RewriteCond jest to warunek, każdy kolejny warunek pod warunkiem jest domyślnie łączony za pomocą łacznika ' i '.
Warunki 'sumują się' dla pierwszego wyrażenia pod nimi, czyli RewriteRule . index.php.
Jeśli żadany plik nie(' ! ') jest plikiem i jeśli żadany plik nie jest katalogiem to przejdź do index.php
Czyli gdy wpiszemy http://softfusion.pl/hrtohjrtihjir to nie znajdując takiego pliku i takiego katalogu przejdzie do strony index.php

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteRule . index.php

Spowodowałoby, że przejście do index.php nastąpiłoby, gdyby szukany plik nie był plikiem lub nie był katalogiem lub nie był (plikiem i katalogiem), czyli szukany plik nie może być jednocześnie plikiem i katalogiem, aby nastąpiło przekierowanie.
0

Prześlij ten temat:


Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych użytkowników


               
           
       
Nasza strona internetowa wykorzystuje cookies (pol.: ciasteczka)

Na naszej stronie wykorzystujemy ciasteczka (ang. cookies), dzięki którym nasz serwis może działać lepiej - więcej o tym w Naszej polityce prywatności. W każdej chwili możesz wyłączyć ten mechanizm w ustawieniach swojej przeglądarki. Korzystanie z naszego serwisu bez zmiany ustawień dotyczących cookies, umieszcza je w pamięci Twojego urządzenia.

Akceptuję   Zmiana ustawień