![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam problem - nie mogę ułożyć wyrażenia regularnego, który zwróci true dla każdego wyrazu który nie będzie miał 'www.' na początku. W przeciwnym razie dostaje false.
Np.
dla elementów {1,3,4} będzie true, a dla {2,5} będzie false. Chodzi mi o konkretne wyrażenie - takie do zastosowania w .htaccess Ten post edytował oscar17 27.11.2008, 09:20:37 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 5.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przy pomocy PHP wyglądałoby to tak:
Co powinno wyświetlić: Cytat Strona example.com jest bez WWW na poczatku Strona www.example.com jest z WWW na poczatku Strona wp.pl jest bez WWW na poczatku Strona subdomain.example.com jest bez WWW na poczatku Strona www.subdomain.example.com jest z WWW na poczatku P.S. Tablica zaczyna się od 0 poprawiłem to (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Super, tylko mi chodziło żeby wyrażenie regularne byłu true dla stringów które nie mają www, a u Ciebie jest odwrotnie.
Chyba że da się to inaczej załatwić w .htaccess - chcę zrobić uniwersalny kod, aby przekierowało mi wszystkie strony bez www. na takie z www. Np dla domeny example.com mogło by być: Kod RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] Ale chciałbym odpowiednio zmodyfikować drugą linijkę, żeby niezależnie do jakiej domeny podepnę ten .htaccess to tak działało. Może ktoś ma inne pomysły? PS. Co do tablic to mogą się zaczynać od takiego elementu jakiego ty im nadasz ;-) Ten post edytował oscar17 27.11.2008, 09:19:10 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 5 Dołączył: 8.02.2005 Skąd: Olsztyn / Zatorze Ostrzeżenie: (0%) ![]() ![]() |
piszę z głowy więc nie wiem czy zadziała (ale może ) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.([a-z]{2,4})$ [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie o to chodzi - nie przepuści czegoś takiego np.:
Kod $array[3] = 'subdomain.example.com'; a powinno... |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Witam mam problem - nie mogę ułożyć wyrażenia regularnego, który zwróci true dla każdego wyrazu który nie będzie miał 'www.' na początku. W przeciwnym razie dostaje false. Jeśli w php, to nie strzelaj do muchy z armaty, wystarczy strpos" title="Zobacz w manualu PHP" target="_manual. Cytat Chyba że da się to inaczej załatwić w .htaccess : Cytat ^
The ^ (circumflex or caret) inside square brackets negates the expression (we will see an alternate use for the circumflex/caret outside square brackets later), for example, [^Ff] means anything except upper or lower case F and [^a-z] means everything except lower case a to z. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
^ The ^ (circumflex or caret) inside square brackets negates the expression (we will see an alternate use for the circumflex/caret outside square brackets later), for example, [^Ff] means anything except upper or lower case F and [^a-z] means everything except lower case a to z. Ok, to wiem, ale jak to zastosować do całego wyrażenia 'www.', a nie dla jednego znaku bo kombinowałem na różne sposoby i wyszło mi co najwyżej że jeżeli 3 pierwsze znaki są różnie od 'w' to przechodziło, ale wtedy już mi odrzucało np. 'wp.pl'. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
RewriteCond
Cytat You can prefix the pattern string with a '!' character (exclamation mark) to specify a non-matching pattern.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki erix - o to właśnie mi chodziło.
I jeśli dobrze zrobiłem - późna pora, ale na przykładzie mi działa to uniwersalny wpis do .htaccess aby wszystkie strony bez www. przekierowywał na z www. wygląda tak: Kod RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 109 Pomógł: 9 Dołączył: 12.03.2007 Skąd: kraków/tarnobrzeg/baranów/suchorzów Ostrzeżenie: (0%) ![]() ![]() |
Ja bym doradzał taki wpis :
Wtedy jest pewność że na stronę nastąpiło wejście wyłącznie po nazwie danej domeny. Może się zdarzyć sytuacja że na serwer są przekierowane dwie domeny. Wtedy mamy pewność że strona zawsze pod jednym adresem się otwiera. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 22 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja rozumiem, ale ten wpis który utworzyłem był takim na którym najbardziej mi zależało - różne strony trzymam w różnych katalogach i nie chce mi się optymalizować w każdym .htaccess pod daną domenę - wolę mieć uniwersalny...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 15:45 |