Jak zprovoznit .htaccess pro m.domena.test

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
motorcb
Člen | 552
+
0
-

Zdravim.
Mam spustene Nette na www.domena.test a následující strukturu na hostingu:

/logs/
/web/
    m/                       #mobilni verze
    .htaccess                #.htaccess pro mobilni verzi
    www/                     #normalni verze
        app/
        libs/
        log/
        temp/
        www/
        .htaccess            #.htaccess pro normalni verzi

Nemohu vyřešit co zadat do mobilniho .htaccess aby se mi nacetlo Nette a v tom si pak rozhodnu zda zobrazim mobilni verzi.

Pokoušel jsem se tam nandat toto:

RewriteEngine on
RewriteRule ^(.*)$ ../www/www/$1 [L,NE]

Ovšem končilo to chybou: Internal Server Error
A v logu jsem našel:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‚LimitInternalRecursion‘ to increase the limit if necessary. Use ‚LogLevel debug‘ to get a backtrace.

V .htaccess pro normalni verzi (www) mám:

RewriteEngine on
RewriteRule ^(.*)$ /www/$1 [L,NE]

Nevěděl by někdo jak na to? Nebo jdu úplně špatným směrem a dá se to řešit elegantněji?

bazo
Člen | 620
+
0
-

sprav si routu pre m.domena.test, nastav si premennu mobile na true a mas vystarane.

motorcb
Člen | 552
+
0
-

bazo:

sprav si routu pre m.domena.test, nastav si premennu mobile na true a mas vystarane.

To až v nádledujícím kroku :) Nejprve potřebuji aby se dostal do Nette kdyz zadam m.domena.test

To udělám tak, že nastavím .htaccess pro m.domena.test a .htaccess mne přesměruje do Nette.
Jenomže nevím jak ten .htaccess nastavit aby mne přesměroval do Nette :(
Nástřel jsem zkoušel udělat v prvním příspěvku

Grelek
Člen | 233
+
0
-

A co takhle?

app/
    DesktopModule/
    MobileModule/
...
www/
    css/
    images/
    js/

Pak už bych si jenom napsal routy.

$router[] = new Route('<presenter>/<action>/[<id>]', array(
    'module' => 'Desktop',
    'presenter' => '...',
    'action' => '...',
));
$router[] = new Route('mobile/<presenter>/<action>/[<id>]', array(
    'module' => 'Mobile',
    'presenter' => '...',
    'action' => '...',
));
motorcb
Člen | 552
+
0
-

Grelek napsal(a):

Diky za info. Resi Tvuj navrh pristup pres m.domena.test? Asi neco? Ja bych chtel pri zadani adresy m.domena.test zobrazovat mobilni verzi

bazo
Člen | 620
+
0
-

tak nasmerujes m.domena.test na ten MobileModule. kde je problem?

bazo
Člen | 620
+
0
-

motorcb napsal(a):

bazo:

sprav si routu pre m.domena.test, nastav si premennu mobile na true a mas vystarane.

To až v nádledujícím kroku :) Nejprve potřebuji aby se dostal do Nette kdyz zadam m.domena.test

To udělám tak, že nastavím .htaccess pro m.domena.test a .htaccess mne přesměruje do Nette.
Jenomže nevím jak ten .htaccess nastavit aby mne přesměroval do Nette :(
Nástřel jsem zkoušel udělat v prvním příspěvku

ved pouzi len jeden htaccess, rozdel si appku na moduly ak chces mat moduly, alebo si nastav nejaku premennu podla ktorej budes vyberat sablony. uplne jednoduche

Majkl578
Moderator | 1364
+
0
-

Myslím, že to, o co se snažíš, vůbec nepotřebuješ. Mobilní verze webu jde reprezentovat jako modul aplikace, normální web jako další modul.

Řešit by to šlo takto (upravená verze od Greleka):

 app/
    WebModule/
    MobileModule/
 www/
    .htaccess
    index.php
    css/
    images/
    js/
...
 \--
$router[] = new Route('//[www.]example.com/<presenter>/<action>', array(
    'module' => 'Web',
    'presenter' => 'Homepage',
    'action' => 'default',
));

$router[] = new Route('//m.example.com/<presenter>/<action>', array(
    'module' => 'Mobile',
    'presenter' => 'Homepage',
    'action' => 'default',
));

Nic víc pak nepotřebuješ.

motorcb
Člen | 552
+
0
-

Majkl578 napsal(a):

Díky. Udelal jsem to presne tak.
Jen nevím jak na obrázky.

tam kde kam na hostingu odkazuje m.domena.test jsem ulozil index.php:

<?php

// absolute filesystem path to this web root
define('WWW_DIR', __DIR__."/../new");


// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/app');

// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/libs');

// load bootstrap file
require APP_DIR . '/bootstrap.php';

Jen nevím jak načítat obrázky. Pro subdomenu m.domena.test se mi obrázky se mi načítají ze složky kde je index.php (web/www/subdom/m/)

V MobileModule (default.latte) mam:

<img src="obrazek.jpg"/>
<hr/>
<img src="{$basePath}/obrazek.jpg"/>

Kam mi doporucite ukladat obrazky pro m.domena.test???
Ja bych je nejradeji ukladal do

Struktura souboru:

/logs/
/web/
    www/
        app/
            WebModule/
            MobileModule/
        libs/
        log/
        temp/
        www/
            web/
                pictures/    #obrazky pro web
                js/          #js pro web
            m/
                pictures/    #obrazky pro mobilni verzi
                js/          #js pro mobilni verzi

	subdom/
	       m/             #mobilni verze
	         index.php    #require APP_DIR . '/bootstrap.php';
motorcb
Člen | 552
+
0
-

Pokusím se toto vlákno opět oživit, protože se mi nedaří problém opravit :)

Celý projekt jsem nahrál na github: https://github.com/…Nette-module

Hosting mám u Wedosu a příklad je řešen pro subdomény.
Subdomény mi fungují, v tom není problém.
Mam domeny:
m.domena.local ⇒ /subdom/m
new.domena.local ⇒ /subdom/new

Problém je, že modul Mobile mi načítá obrázky z /subdom/m a já bych chtěl aby mi je načítal z /subdom/new/www/pictures/…

Viz: https://github.com/…efault.latte

Dělám někde logickou chybu? Nebo jak vyřešit tento problém?

abrakadabra
Člen | 1
+
0
-

Riešim podobnú záležitosť.. pokiaľ si ho ešte nečítal, tak toto vlákno Subdomény, jak správne routovat by ti mohlo pomôcť. Konkrétne hosiplanove rady ohľadom shared/media subdomény. Dnes som to našiel a myslím si, že touto cestou to pôjde..