Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] Negacja w wyrazeniu regularnym
Forum PHP.pl > Forum > Serwery WWW > Apache
f4ngorn
Witam, mam taki problem. Moj skrypt korzysta z linkow w formacie index.php?page=zmienna1 oraz index.php?page=idz&addr=cos

Podstrony "statyczne" przepisuje

Kod
RewriteRule ^kontakt.html$ index.php?page=kontakt
RewriteRule ^sprawdz.html$ index.php?page=sprawdz
RewriteRule ^dodaj.html$ index.php?page=dodaj


oraz drugi link
Kod
RewriteRule ^idz/([^-]*)$ index.php?page=idz&addr=$1


Efekt: domena.pl/kontakt.html / sprawdz.html / dodaj.html oraz z drugiego domena.pl/idz/costam

Chce, aby zamiast domena.pl/idz/costam bylo domena.pl/costam . Wpadlem na pomysl, zeby kierowac na ?page=idz&addr=$1 wszystko, co nie ma w sobie .html, jednak niewiem jak sie za to wziasc. Nienzam wyrazen regularnych.

Prosze o pomoc
erix
A słyszałeś o modyfikatorze [L]? Lektura dokumentacji się kłania.
f4ngorn
Modyfikator [L] oznacza, ze nie ma on wykonywac kolejnych regul... Ale to niewiele ma do mojego problemu. Probowalem podstawic ^([^-]*)!(\.html)$ ale dziala... Musze napisac regule "jezeli nie zawiera na koncu html -> index.php?page=idz&addr=$1". Tylko o to prosze.
erix
Ale jak dodasz do każdej:
Kod
RewriteRule ^kontakt.html$ index.php?page=kontakt
RewriteRule ^sprawdz.html$ index.php?page=sprawdz
RewriteRule ^dodaj.html$ index.php?page=dodaj

Ten modyfikator, to nie będziesz musiał kombinować z negacją...
f4ngorn
Dodalem flagi [R], zeby sprawdzic dokad kieruje to wyrazenie.

Kod
RewriteRule ^kontakt.html$ index.php?page=kontakt [L,R]
RewriteRule ^sprawdz.html$ index.php?page=sprawdz [L,R]
RewriteRule ^dodaj.html$ index.php?page=dodaj [L,R]
RewriteRule ^(.+)$ index.php?page=idz&addr=$1 [L,R]


Przy takim zestawieniu nic nie dziala... Wszelkie requesty sa kierowane na http://www.ciachnij.pl/index.php?page=idz&addr=index.php

Moze niedokladnie opisalem problem - chce zamiast

Kod
RewriteRule ^idz/(.+)$ index.php?page=idz&addr=$1

ktore kieruje na ciachnij.pl/idz/tutaj_podstawia

miec

ciachnij.pl/tutaj_podstawia, jednoczesnie zachowujac ciachnij.pl/ dla samego index.php oraz pozostale warunki (tj. kontakt.html, sprawdz.html i dodaj.html).
erix
Wciśnij ostatnią regułkę na sam początek.
f4ngorn
Kod
Options FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^ciachnij.pl
RewriteRule ^(.*)$ http://www.ciachnij.pl/$1 [R=301,L]

RewriteRule ^(.+)$ index.php?page=idz&addr=$1 [L,R]
RewriteRule ^kontakt.html$ index.php?page=kontakt [L,R]
RewriteRule ^sprawdz.html$ index.php?page=sprawdz [L,R]
RewriteRule ^dodaj.html$ index.php?page=dodaj [L,R]

order allow,deny
deny from 77.254.143.196
allow from all


Przy http://www.ciachnij.pl/interia przekierowuje na http://www.ciachnij.pl/index.php?page=idz&addr=index.php

Podaje rozwiazanie problemu, gdyby ktos taki napotkal...

Tak wyglada moj kod .htaccess
  1. <?php
  2. Options FollowSymLinks
  3. RewriteEngine On
  4. RewriteBase /
  5.  
  6. RewriteCond %{HTTP_HOST} ^ciachnij.pl
  7. RewriteRule ^(.*)$ <a href=&#092;"http://www.ciachnij.pl/$1\" target=\"_blank\">http://www.ciachnij.pl/$1</a> [R=301,L]
  8.  
  9. #RewriteRule !.(js|ico|gif|jpg|png|css)$ - [L]
  10.  
  11.  
  12. RewriteRule ^kontakt.html$ index.php?page=kontakt
  13. RewriteRule ^sprawdz.html$ index.php?page=sprawdz
  14. RewriteRule ^dodaj.html$ index.php?page=dodaj
  15. RewriteRule ^ostronie.html$ index.php?page=ostronie
  16. RewriteRule ^robots.txt$ robots.txt
  17.  
  18. RewriteCond %{REQUEST_FILENAME} !-f
  19. RewriteCond %{REQUEST_FILENAME} !-d
  20. RewriteRule ^(.*)$ /index.php?page=idz&addr=$1
  21.  
  22.  
  23. order allow,deny
  24. deny from 77.254.143.196
  25. allow from all
  26. ?>
erix
Kod
RewriteRule ^kontakt.html$ index.php?page=kontakt
RewriteRule ^sprawdz.html$ index.php?page=sprawdz
RewriteRule ^dodaj.html$ index.php?page=dodaj
RewriteRule ^ostronie.html$ index.php?page=ostronie
RewriteRule ^robots.txt$ robots.txt

A gdzie [L] zjadłeś?
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.