Autor Zpráva
Hologos
Profil
Zdravím,

mám problém s provozem nette aplikace na subdoméně u wedosu, kde na hlavní doméně běží WordPress aplikace (to ale doufám, že irelevantní, protože jestli ne, tak tomu fakt nerozumím :-) Problém je v tom, že se mi nenačítá nic jiného než index.php (který je v /www/subdom/test/www/index.php), tedy styly, js, obrázky, a po kliknutí na odkaz dostávám 500 Internal server error. Problém vidím v nějakém nekonečném přesměrování.

Na web lezu přes test.domena.cz

Struktura webu
/
- logs
- session
- tmp
- www
  - .htaccess <--- *1
  - domains
    - domena.cz
      - <wp_aplikace>
  - subdom
    - test
      - <nette_aplikace>
      - .htaccess <--- *2
      - www
        - <obsah_www_nette_aplikace>
        - .htaccess <--- *3
        - index.php

Obsah jednotlivých .htaccess
*1 (standardní od webosu)
RewriteEngine On

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

*2 (standardní nettí .htaccess)
RewriteEngine On
RewriteRule (.*) www/index.php [L]

*3 (již upravený nettí .htaccess)
# Apache configuration file (see httpd.apache.org/docs/current/mod/quickreference.html)

# disable directory listing
<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>

# enable cool URL
<IfModule mod_rewrite.c>
    RewriteEngine On
    # 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|map)$ index.php [L]
</IfModule>

# enable gzip compression
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml image/svg+xml
    </IfModule>
</IfModule>

app/router/RouterFactory.php
<?php

namespace App;

use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;


class RouterFactory
{

    /**
     * @return Nette\Application\IRouter
     */
    public static function createRouter()
    {
        $router = new RouteList;
        $router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
        return $router;
    }

}

app/config/config.neon
...
services:
        ...
    router: App\RouterFactory::createRouter
...

Dokázal by mi někdo poradit, jak to rozchodit?

Moc děkuji.
Taps
Profil
Hologos:
zkus odkomentovat řádek
RewriteBase /
Hologos
Profil
Bohužel nepomohlo. Nemáte nějaký tip, jak toto debuggovat? Případně nějakou literaturu, která popisuje mod_rewrite v takových to šílenostech? Nikde jsem se třeba nedočetl, tak to je, když v cestě jsou 3 .htaccessy, jak se to vyhodnotí?

Díky
Taps
Profil
Hologos:
zkus pohledat řešení na oficiálním foru nette
forum.nette.org/cs/9510-nette-sandbox-wedos-subdom
forum.nette.org/cs/7658-vhodny-hosting-pro-nette-wedos#p58013
github.com/xlilien/nette-wedos-sandbox - sice zastaralé, ale třeba ti to pomůže
Hologos
Profil
Tak mi nakonec pomohl sandbox od Xliliena .
Problém byl v .htaccess *2
*2 (standardní nettí .htaccess)
RewriteEngine On
RewriteRule (.*) www/index.php [L]

při testování jsem ho asi přepsal nebo nevím, ale správně to má být takto:

*2 (standardní nettí .htaccess)
RewriteEngine On
RewriteRule ^(.*)$ /www/$1 [L,NE]



Taps:
github.com/xlilien/nette-wedos-sandbox - sice zastaralé, ale třeba ti to pomůže

Koukám, našli jsme to samé :-)
Moc děkuju za pomoc.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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