Autor Zpráva
Kcko
Profil
Poměrně dlouho zkouším a googlim řešení, aby při požadavku
např. aaa.domena.cz , se přepsala adresa na domena.cz/aaa
taktéž aaa.domena.cz?a=1&b=2 => domena.cz/aaa?a=1&b=1

Slovem přepsala míním interně, v URL musí aaa.domena.cz zůstat (redirect nechci, pokud bych tam narval http:// s příznakem [R] tak to funguje).

Struktura
============
root
 .htaccess 
 [DIR]  skutecna-subdomena1
 [DIR]  skutecna-subdomena2
 [DIR]  www (hlavni adresar webu, sem se dostane požadavek na domena.cz)

umístil jsem .htaccess do rootu

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^aaa.domena.cz$ [NC]
RewriteCond %{REQUEST_URI} !aaa/
RewriteRule ^(.*)$ /www/$1 [R]

a dostane se mi http://aaa.domena.cz/www/aaa/

Díky.
Radek9
Profil
Kcko:
redirect nechci
Tak proč ho tam dáváš? :-)

Tohle by mělo fungovat:
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^aaa.domena.cz$ [NC]
RewriteRule ^(.*)$ /www/$1 [QSA,L]
Kcko
Profil
Radek9:
To přesměrování jsem tam dal proto, abych viděl co se s tím děje a co to vlastně chce udělat.
Ted mi to píše

The requested URL /www/kontakt/ was not found on this server. (Zkouším kontakt.domena.cz, protoze na domena.cz/kontakt mam stranku).
:/
Xanomes_
Profil *
Kcko:
The requested URL /www/kontakt/ was not found on this server. (Zkouším kontakt.domena.cz, protoze na domena.cz/kontakt mam stranku).
Nezapomeň, že domena.cz/kontakt/ není totéž co domena.cz/kontakt. Nastav tedy pro domena.cz/kontakt/ podvržení adresy domena.cz/kontakt a chybu ti to házet nebude :)
Kcko
Profil
Xanomes:
Nerozumím, ale abysme byli konkrétní
RewriteEngine On
RewriteBase /
 
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^kontakt.rjwebdesign.cz$ [NC]
RewriteRule ^(.*)$ /www/$1 [QSA,L]
Xanomes_
Profil *
Kcko:
Teď zas nerozumím já. Proč na subdoméně kontakt podvrháváš rjwebdesign.cz? Já myslel, že na subdoméně kontakt chceš podvrhávat rjwebdesign.cz/kontakt...
Kcko
Profil
Xanomes:
Já žádnou subdoménu nemám, chci jen aby to tak vypadalo a ve skutečnosti se čerpalo z rjwebdesign.cz/kontakt
Xanomes_
Profil *
Kcko:
Takže chceš podvrhávat rjwebdesign.cz/kontakt. V tom případě nechápu, proč podvrháváš /www/ a nikoliv /www/kontakt.php.
Takhle by to mohlo fungovat:
RewriteEngine On
RewriteBase /
 
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^kontakt.rjwebdesign.cz$ [NC]
RewriteRule ^(.*)$ /www/kontakt.php$1 [QSA,L]
Kcko
Profil
Xanomes:
Žádnej kontakt.php , je to na nette, všechno jde přes index.php.
Kajman
Profil
Kcko:
Jaká přepisovací pravidla jsou v tom www?
Davex
Profil
Kcko:
Vypadá to, že tam bude nějaké další pravidlo, které ještě přepisuje subdoménu kontakt do adresáře /kontakt/. Tím se to trochu komplikuje a upravené pravidlo by mělo vypadat asi nějak takto:

RewriteRule ^/?(kontakt)/ /www/$1 [QSA,L]
Kcko
Profil
Kajman:
/www/ což je tedy automaticky generovaný adresář pro web, tj něco jako document_root
je klasický Nettí htaccess
RewriteEngine On

RewriteRule ^$ /www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1

a zároveń je v této úrovni fw Nette se svými klasickými složkami app, log, temp ... a také ještě jednou www (kde jsou css, obrázky atd) a také index.php ve kterém se inicializuje $container a a samozřejmě ještě jeden .htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  
  
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
  
  RewriteBase /
  
  # prevents files starting with dot to be viewed by browser
  RewriteRule /\.|^\. - [F]

  # front controller
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
  RewriteRule !\.(pdf|js|ico|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>



Davex:
Děkuji za snahu, stále ten samý problém The requested URL /www/kontakt was not found on this server.
Kajman
Profil
Kcko:
Můžeš si zapnout rewritelog?

Změní něco flag PT?
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(aaa)\.domena\.cz$ [NC]
RewriteRule ^(.*)$ /www/%1 [PT,L]

Otázkou je, podle čeho pak routuje nette, to by šlo upravit?
(Třeba, kdyby se přepisovalo rovnou na www/www/index.php a nette by zkombinovalo subdoménu a cestu.)

Další variantou by mohlo být nahození mod_proxy a pak půjde v RewriteRule podstrčit celou doménu díky flagu P. Ale to asi až jako poslední nevýkonná varianta.
Kcko
Profil
Kajman:
Rewrite log nejde, ale zítra v práci se spojím s adminem serveru a nechám si ho povolit.
Flat PT nic nezmění.
Díky za ochotu, asi to budu dál řešit s adminem serveru, protože to vypadá na hlubší problém.
Davex
Profil
Kcko:
Děkuji za snahu, stále ten samý problém
Pak je tu ještě druhá možnost, že se subdomény rozhazují do adresářů pomocí modulu mod_vhost_alias, a potom z nich nepůjde „vyskočit“ přepisovacím pravidlem mod_rewrite. Všechny přepisy pak skončí v adresáři pro subdoménu.
Kcko
Profil
Davex:
No něco takového mě napadlo (nemyslím přesné označení, ale něco v tomhle smyslu), takže jak jsem psal, budu to muset řešit s konkrétním člověkem.

Díky všem.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: