Skocz do zawartości

mod_rewrite i subdomeny - jak przekazac wiecej parametrow?


lbt

Rekomendowane odpowiedzi

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule ^([a-z]*)/([0-9]*)$ /uzytkownik.php?userid=%2&jezyk=$1&id=$2 [L,NC]
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule .* /uzytkownik.php?userid=%2&jezyk=pl [L,NC]

Czyli to powinno działać, a nie działa...

Jeśli chodzi o moje adresy, to są tylko te co w przykładach:

www.userid.adres.com na www.adres.com/uzytkownik.php?userid=userid&jezyk=pl

www.userid.adres.com/kodjezyka/ na www.adres.com/uzytkownik.php?userid=userid&jezyk=kodjezyka

Odnośnik do komentarza
Udostępnij na innych stronach

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule ^([a-z]*)/$ /uzytkownik.php?userid=%2&jezyk=$1 [L,NC]
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule !. /uzytkownik.php?userid=%2&jezyk=pl [L,NC]

e:

Tak sobie myślę że przekazujesz także inne R_U w zapytaniach do skryptu(oprócz języka)? Wtedy musisz dostosować powyższe reguły, bo w tej postaci tylko działają na podanych przykładach czyli R_U wynosi '/' czyli nic (https://sub.adres.com/) lub jest podany sam kodjezyka (https://sub.adres.com/angielski/).

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.)+.adres.com
RewriteRule ^([a-z]*)/$ /uzytkownik.php?userid=%1&jezyk=$1 [L,NC]
RewriteCond %{HTTP_HOST} ^www.(.)+.adres.com
RewriteRule !. /uzytkownik.php?userid=%1&jezyk=pl [L,NC]

?

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Wielki Elektronik

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdziłem, i mi śmiga:

Dla Twojego rozwiązania czy dla tego od Irka?

U mnie w obu ten sam problem. nie przekazuje userid w krótszym odwołaniu... Może to coś jest z moim serwerem? Mam wykupiony na home.pl więc raczej wszystko powinno być ok.

Odnośnik do komentarza
Udostępnij na innych stronach

nie przekazuje userid w krótszym odwołaniu...

nie doczytałem :)

Spróbuj tak:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule ^([a-z]*)/$ /uzytkownik.php?userid=%2&jezyk=$1 [L,NC]
RewriteCond %{HTTP_HOST} !^(www\.)?adres.com
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.adres.com
RewriteRule ^/?$ /uzytkownik.php?userid=%2&jezyk=pl [L,NC]

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

To ja bym miał jeszcze szybkie pytanko dot. tematu:

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www.domena.pl$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+).domena.pl$
RewriteRule ^$ /main.php?subdomena=%2

RewriteCond %{HTTP_HOST} !^www.domena.pl$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+).domena.pl$
RewriteRule ^([^\\\./]+)\.html$ /main.php?subdomena=%2&zmienna=$1

Działa

Chciałbym jednak nie przepisywać za każdym razem RewriteCond więc robię coś takiego:

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www.domena.pl$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+).domena.pl$

RewriteRule ^$ /main.php?subdomena=%2
RewriteRule ^([^\\\./]+)\.html$ /main.php?subdomena=%2&zmienna=$1

I już nie działa. W jaki sposób [flagi?] zmienić kod by reguły wpisane w RewriteCond działały globalnie?

Serdecznie dziękuję za pomoc

Mój portal: Lokalizacja telefonu - usługa dla każdego rodzica chcącego zlokalizować swoje dziecko!

Odnośnik do komentarza
Udostępnij na innych stronach

Additionally you can set special flags for CondPattern by appending

[flags]

as the third argument to the RewriteCond directive. Flags is a comma-separated list of the following flags:

* 'nocase|NC' (no case)

This makes the test case-insensitive, i.e., there is no difference between 'A-Z' and 'a-z' both in the expanded TestString and the CondPattern. This flag is effective only for comparisons between TestString and CondPattern. It has no effect on filesystem and subrequest checks.

* 'ornext|OR' (or next condition)

Use this to combine rule conditions with a local OR instead of the implicit AND. Typical example:

RewriteCond %{REMOTE_HOST} ^host1.* [OR]

RewriteCond %{REMOTE_HOST} ^host2.* [OR]

RewriteCond %{REMOTE_HOST} ^host3.*

RewriteRule ...some special stuff for any of these hosts...

Without this flag you would have to write the cond/rule three times.

Example:

To rewrite the Homepage of a site according to the ``User-Agent:'' header of the request, you can use the following:

RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*

RewriteRule ^/$ /homepage.max.html [L]

RewriteCond %{HTTP_USER_AGENT} ^Lynx.*

RewriteRule ^/$ /homepage.min.html [L]

RewriteRule ^/$ /homepage.std.html [L]

https://httpd.apache.org/docs/1.3/mod/mod_r...tml#RewriteCond

Czytam, szukam i raczej twórcy mod_rewrite nie przewidzieli takich rozwiązań :)

Można pokombinować z przetwarzaniem REQUEST_URI otrzymanego z pierwszego RewriteRule w drugim i coś z tego wyklepać (lub połączyć oba w jednym R_R), tylko po co :)

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności