Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Wyrażenia regularne]Zaprzeczenie, negacja
ShadowD
post 29.11.2008, 00:47:26
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Dziś przez kilka godzin szukałem odpowiedzi na moje pytanie i jej nie odnalazłem co więcej wydaje mi się, że owa możliwość w ogóle nie istnieje w wyrażeniach regularnych.

Przypuśćmy że mamy kilka adresów:
www.aaa.qw.pl
www.bbb.qw.pl
www.bbb.qw,pl
www.ddd.qw.pl

I chcemy napisać prostą regułę która dopisze www gdy ktoś poda adres w postaci aaa.pl czy ddd.pl.
Możemy napisać coś w stylu:
RewriteCond %{HTTP_HOST} ^www.([a-z0-9]*).qw.pl$
RewriteRule (.*) http://www.%1.qw.pl [R,L]

Teraz nasuwa się wielkie pytanie, czy jest możliwość zaprzeczenia pogrubionej części wyrażenia??

Na pewno można zaprzeczyć znakom np:
[^a-z]
Czy też całości:
!^......$
Ale możemy tego dokonać do zwykłego 4 znakowego ciągu a może w ogóle powinienem zabrać się do tego problemu z innej strony??

Z góry dziękuję za pomoc...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
magra
post 29.11.2008, 10:17:02
Post #2





Grupa: Zarejestrowani
Postów: 34
Pomógł: 8
Dołączył: 5.10.2004

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


może tak?

RewriteCond %{HTTP_HOST} ^(www.){0}([a-z0-9]*).qw.pl$

nie sprawdzałem czy działa


--------------------
www.internetum.pl
Go to the top of the page
+Quote Post
skim
post 29.11.2008, 11:06:41
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 9.05.2007
Skąd: Krzyż Wielkopolski

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


a nie tak: ^[www] ? uważaj na kropki. backslesha używaj jeśli kropka nie jest dowolnym znakiem... a tutaj tak jest:
Kod
^www.([a-z0-9]*).qw.pl$


Ten post edytował skim 29.11.2008, 11:07:37
Go to the top of the page
+Quote Post
ShadowD
post 29.11.2008, 13:07:54
Post #4





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


^www.([a-z0-9]*).qw.pl$
Ta reguła wykona się wtedy gdy link zawiera www a mi chodzi by przekierować gdy w linku brakuje www.

Rozwiązanie magra zaraz przetestuje ale wydaje mi się że jest ok...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 13:10:42
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. escape'uj kropkę, bo to jest znak specjalny
  2. daj przed warunkiem w RewriteCond wykrzyknik, to wtedy będziesz miał negację warunku. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ShadowD
post 29.11.2008, 13:15:41
Post #6





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


1. Tak wiem że powinien być tam '/' ale to nie ma znaczenia, chce zaprzeczyć 'www.' więc muszę uznać to za ciąg a w ciągu już nie będzie musiał stać '/'.
2. Mam inne domeny które również dziedziczą owe warunki więc wedle twojego pomysłu musiał bym zanegować ciąg 'qw.pl' jednak jest to dokładnie taka sama sytuacja jak w przypadku zaprzeczania 'www.'.

Czekam na dalsze pomysły i sam poluję na coś w sieci...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 13:18:00
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie, czemu?

Kod
RewriteCond %{HTTP_HOST} !^www\.(.+)
RewriteRule . http://www.%1

Pisane z palca.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ShadowD
post 29.11.2008, 13:27:42
Post #8





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Źle ponieważ dalej dajesz !^www\.(.+) co oznacza jedno albo więcej wystąpień, w przypadku 'qw.pl' będzie błąd...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 13:39:54
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale czemu będzie błąd? To jest uniwersalne rozwiązanie. A jedno lub więcej wystąpień NIE ODNOSI się do www.. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ShadowD
post 29.11.2008, 13:43:33
Post #10





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


No nie ale do reszty, coś mi się musiało pokręcić już załogo nad tym siedzę zaraz przetestuję twoje rozwiązanie a tymczasem mój wymysł:

RewriteCond %{HTTP_HOST} !^www.([^a-z0-9./]*)$
RewriteRule (.*) http://www.%1 [R]

Niestety nie działa z:
http://fala.cmsss.pl/
Tworzy:
http://www..com

Może jakiś pomysłquestionmark.gif ;p

EDIT:
Twoje rozwiązanie prowadzi do identycznego wyniku z:
http://fala.cmsss.pl/
Tworzy:
http://www..com

Ten post edytował ShadowD 29.11.2008, 13:46:00


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 14:00:27
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ShadowD
post 29.11.2008, 14:04:14
Post #12





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Ahhh zapomniałem o zmiennych...

Co nieco jeszcze jest źle ale to już sobie poprawie wielkie dzięki.

Poprawiony kod:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^cmsss/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
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: 14.08.2025 - 13:27