Portál AbcLinuxu, 12. května 2025 13:40

Dotaz: rewrite po prejmenovani serveru

3.9.2007 13:56 David | skóre: 21 | Praha
rewrite po prejmenovani serveru
Přečteno: 587×
Odpovědět | Admin
Ahoj, potreboval jsem prejmenovat server (rekneme z nazevA na nazevB). Potreboval bych na zacatek konfiguraku dat neco, co by zajistilo, ze se na server (mysleno na apache) muzu odkazovat jak pomoci nazevA tak pomici nazevB. Zkousel jsem
RewriteEngine On
RewriteRule nazevB nazevA
jenze to nefunguje (predchozi je na zacatku konfiguraku, hned po direktive NameVirtualHost a je mimo jakykoli Virtualhost). Diky, David
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.9.2007 17:57 Sajfi | skóre: 8
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
V .htaccess (ty je třeba povolit v httpd.conf) mám pro přesměrování z www.fotkyzcest.cz na www.fotkyzcest.net toto:
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^www.fotkyzcest.cz
  RewriteRule ^(.*)$ http://www.fotkyzcest.net/$1 [R=301,QSA,L]
</IfModule>
4.9.2007 13:57 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
Diky za odpoved, nicmene pomoci htaccess to resit nechci, chtel bych nejaky rewrite, ktery by to vyresil vse.
4.9.2007 14:38 Sajfi | skóre: 8
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
Tak jen ty pravidla místo do .htaccess dej do httpd.conf :-). Na hostingu mě do httpd.conf nepustí (což se jim nedivím), proto ten .htaccess.
4.9.2007 14:49 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
jenze tenhle rewrite neni to co chci, ja chci aby se jakakoli adresa obsahujizi nazevB zmenila na nazevA. Pr:
wwww.nazevB.domena.cz na www.nazevA.domena.cz
nazevB.domena.cz na nazevA.domena.cz
tonda.nazevB.domena.cz na tonda.nazevA.domena.cz
nazevB.domena.cz/neco na nazevA.domena.cz/neco
atp.
4.9.2007 18:10 VRtulnikk | skóre: 17 | blog: blogisek | Rokycany
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
mod_rewrite pokud vim podporuje regulerni vyrazy, nevidim v tom zadny problem
4.9.2007 20:44 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
tak prosim napiste prislusny rewrite
6.9.2007 09:51 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
jenze me prijde, ze mod_rewrite je delany jen na prepis casti za lomitkem (www.server.cz/kam/mam/jit .. tady bych mohl prepisovat pouze cast kam/mam/jit), jenze ja potrebuji prepisovat cast pred lomitkem (tedy cast www.server.cz).
6.9.2007 11:58 Sajfi | skóre: 8
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru

Mod_rewrite umí měnit i část před lomítkem, pak nejde o podsunutí stránky, ale o přesměrování, viz ten můj příklad a [R=301]. Ale to co chcete není asi moc obvyklé a nikdo si taková pravidla zatím nepsal, takže nezbyde než si potrápit mozkové závity sám. Zkuste se podívat sem:

http://interval.cz/serialy/mod-rewrite-pro-hezka-url/
http://www.jakpsatweb.cz/server/mod-rewrite.html
http://www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html

RewriteRule je samotné pravidlo a RewriteCond umožní pravidlo provést při splnění určité podmínky (podmínek), v obojím se používají regulární výrazy (.* je jakýkoliv text, ^ je začátek řádky). Zkuste se odrazit od:

RewriteCond %{HTTP_HOST} !^.*nazevB.domena.cz
RewriteCond %{HTTP_HOST} ^(.*)nazevA.domena.cz
RewriteRule ^(.*)$ http://%1nazevB.domena.cz/$1 [R=301,QSA,L]

Je to co mě teď napadlo, tedy jen nasměrování bez záruky. První RewriteCond testuje, jestli už jdu na nazevB.domena.cz, pokud ano, končím (je tam !). Následuje AND a druhé RewriteCond testuje, jestli je v HTTP_HOST nazevA.domena.cz a jestli mu i něco předchází, pokud ano, díky () si zapamatuje (mělo by být v %1, to právě nevím) co předchází a jde na RewriteRule. Tam si jen zapamatuju co je za lomítkem (budu to mít v $1) a provedu složení výsledného url a přesměrování (R v hranatých závorkách je přesměrování, QSA připojí parametry předávané pomocí GET a L značí poslední pravidlo).

Zkuste sem pak ty pravidla dát, ať je řešení navždy v archivu.

7.9.2007 10:30 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
Tak moje salamounske reseni bylo jako prvni virtual host dat:
VirtualHost *
ServerName *.nazevA.domena.cz
RewriteEngine  on
RewriteCond %{HTTP_HOST}       ^(.*)nazevA\.domena\.cz [NC]
RewriteRule ^/(.*)$             http://%1nazevB.domena.cz/$1 [R=301,QSA,L]
/VirtualHost
Takze to Jenik: s tim %1 si mel pravdu, moc dekuju. Bohuzel mi apache bezi tak 2min a pak padne :(. Bez tohohle virtualhostu bezi normalne, tezko rict, jestli je problem v tom virtual hostu, ci je problem v apache (neni distribucni, ale kompilovany).
Jeste jednou diky Jenik za moc pekny navod, hodne mi pomohl.
David
3.9.2007 21:03 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
ServerAlias do sekce VirtualHost?
4.9.2007 13:56 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: rewrite po prejmenovani serveru
No prave ze nechci psat ServerAlias stokrat, ale chci tam dat na zacatek, aby vse co jde na nazevA se prelozilo na nazevB.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.