Správa domén 3. řádu pomocí mod_rewrite

The Zero, čtvrtek 16. 8. 2007 - 03:15

Ještě nedávno jsem byl, co se týče mod_rewrite, úplným nováčkem a ani teď nepovažuji své znalosti za dostatečné, ale poslední práce mě donutila k používání něčeho jiného, než je přepisování 404 stránky.

V manuálu Apache je dynamické správě domén věnována celá dlouhá stránka, ale většina řešení se zabývá doménou druhého řádu (jen pro jistotu: http://treti.druhy.prvni/rad). S tím souvisí ještě jedna velká nevýhoda: Řešení nefunguje v souborech .htaccess umístěných v adresáři s webem, takže pokud zrovna nemáte svůj server, je vám to na nic. Přesto jej uvedu (zde v kombinaci s VirtualHost):

<VirtualHost *:80>
DocumentRoot C:/web/web/project/
ServerName domain.cz
ServerAlias domain.cz *.domain.cz

 
# #begin;
RewriteEngine on
 
RewriteMap lowercase int:tolower
 
# check the hostname is right so that the RewriteRule works
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z-]+\.domain\.cz$
 
# concatenate the virtual host name onto the start of the URI
# the [C] means do the next rewrite on the result of this one
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
 
# now create the real file name
RewriteRule ^([a-z-]+)\.domain\.cz/?(.*) C:/web/web/project/index.php?domain=$1&param=$1/$2
</VirtualHost>

Evidentně to tedy není zrovna postup, jakým byste si mohli spravovat skripty na nějakém hostingu.

I já jsem byl donucen opustit tento postup a vymyslet způsob, jak přepisovat poddomény jen z .htaccessu. Dlouho jsem se trápil s upravováním výše uvedené konfigurace, až jsem si nakonec řekl, že takhle to prostě nepůjde, že to musim přepsat. A ono to kupodivu šlo, a je to mnohem jednodušší. Má to ale nevýhodu: Zřejmě to stejně závisí na konfiguraci Apache, protože tady na tomto hostingu se mi to zprovoznit nepodařilo.

RewriteEngine On
 
# Prepiseme domeny tretiho radu na ridici skript
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.cz
RewriteRule ^([a-z0-9:/\-]*)$ /index.php?domain=%{HTTP_HOST}&param=$1 [L,QSA]

To je trochu jednodušší, ne? (Všimněte si regulárního výrazu na posledním řádku, možná bude potřeba upravit podle potřeby)

Zařazeno do kategorie Webdesign.

Předchozí: Profilování PHP (APD vs. XDebug)

Následující: Kopírovat zdrojáky se nevyplatí

Komentáře

Nikdo ještě nekomentoval. Buď máte fakt rychlou RSS čtečku, nebo jste právě přečetli něco, co nikomu nestojí ani za trochu snahy.

Přidat komentář

Jako heslo je to proto, že lze využít magic wand a odpověď se tak bude pamatovat.

Povolené tagy: b, i, q. Bez jakýchkoli atributů a řádně ukončené. URL se převádí automaticky.

Vyžadováno je pouze jméno (proto je zvýrazněné), text, kód (ten zadáváte jen s vypnutým JavaScriptem - jestli ho nevidíte, nemusíte se o něj starat. Poslední věc, kterou formulář vyžaduje, je stisknutí tlačítka Přidat.

* E-mail slouží především k načtení gravatarů. Zobrazovat se nebude.