Portál AbcLinuxu, 7. května 2025 01:21

Dotaz: Apache: mod_rewrite ve VirtualDocumentRoot

4.5.2010 12:03 TiVek
Apache: mod_rewrite ve VirtualDocumentRoot
Přečteno: 611×
Odpovědět | Admin
Zdravím, mám problém s přepisováním adresy pomocí mod_rewrite. Na svůj server mám směrováno několik domén a vhosty v apache mám pro ně konfigurovány následovně:
 
NameVirtualHost *:80  

<VirtualHost _default_:80>     
UseCanonicalName Off     
VirtualDocumentRoot /mnt/sdb1/www/%2+/%1 
</VirtualHost>

ve složce /mnt/sdb1/www je potom .htaccess, který správně přepisuje adresu bez www (domena.tld) na www.domena.tld
 

Options +FollowSymlinks 
RewriteEngine on  
RewriteCond %{HTTP_HOST}  ^([^.]+)\.([^.]+)$ 
RewriteRule ^(.*)$  http://www.%{HTTP_HOST} [L,R=301,QSA] 

toto funguje bezproblémů, problém nastává pokud do složky konkrétní domény /mnt/sdb1/www/domena.tld/www zkopíruju .htaccess, který má přepisovat konce adres:
 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ /$1/ [R=301] 
RewriteRule ^(cz|en)/(.*)$ index.php?contentMutation=$1&contentRubrics=$2 [L,QSA] 

mod_rewrite je přepíše sice správně ale místo aby se dokument potom hledal v /mnt/sdb1/www/domena.tld/www se hledá v /mnt/sdb1/www/domena.tld/www/mnt/sdb1/www/domena.tld/www

jediné na co jsem zatím přišel je, že pokud definuji ve virtualhostu
DocumentRoot /mnt/sdb1/hosting/domena.tld/www
tak mi to pro tu jednu konkrétní doménu fungovat začne DocumentRoot se ovšem nedá použít na více domén a subdomén zároveň

nenapadá vás něco?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.5.2010 15:00 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Apache: mod_rewrite ve VirtualDocumentRoot
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nastaveni RewriteBase nepomuze?
5.5.2010 10:23 TiVek
Rozbalit Rozbalit vše Re: Apache: mod_rewrite ve VirtualDocumentRoot
mnohokrát děkuji za radu - pomohlo. Ale ještě by mě zajímalo, zda toto nejde vyřešit nějak aby tuto direktivu nemusel psát programátor do svého .htaccess souboru přímo u webu, tedy nějaké centrálnější řešení přímo v apache.
5.5.2010 11:27 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: Apache: mod_rewrite ve VirtualDocumentRoot
Napsat rewritebase do htaccess vadi a napsat tam rewritecond a rewriterule nevadi?
Rewrite pravidla se daji psat samozrejme i do apache, vse co se da dat do htaccess muze byt primo v konfiguraci apache, je to i lepsi kvuli vykonu a bezpecnosti, ale zrovna rewrite pravidla se musi trochu upravit.
V pekle jsou samé diskety a ďábel je velká disketová mechanika

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.