Jak na <presenter>.domena.cz/<action>/…?

- Zuben45
 - Člen | 268
 
Zdravím,
potřeboval bych poradit, jak mám správně nastavit Nette, popřípadě
.htaccess nebo apache.config, aby mi fungovalo routování ve tvaru
<presenter>.domena.cz/<action>/
Ať upravuji, jak chci, stále mi vyskočí buď stránka nenalezena nebo přístup zamítnut.
Můj routerFactory:
<?php
use Nette\Application\Routers\RouteList,
	Nette\Application\Routers\Route,
	Nette\Application\Routers\SimpleRouter;
use Nette\Utils\Strings;
/**
 * Router factory.
 */
class RouterFactory
{
	/**
	 * @return Nette\Application\IRouter
	 */
	public function createRouter()
	{
Route::addStyle('nicename');
Route::setStyleProperty('nicename', Route::FILTER_OUT, function($url) {
    return Strings::webalize($url);
});
Route::setStyleProperty('nicename', Route::FILTER_IN, function($url) {
    return Strings::webalize($url);
});
Route::addStyle('zanr');
Route::setStyleProperty('zanr', Route::FILTER_OUT, function($url) {
    return Strings::webalize($url);
});
Route::setStyleProperty('zanr', Route::FILTER_IN, function($url) {
    return Strings::webalize($url);
});
Route::addStyle('tag');
Route::setStyleProperty('tag', Route::FILTER_OUT, function($url) {
    return Strings::webalize($url);
});
Route::setStyleProperty('tag', Route::FILTER_IN, function($url) {
    return Strings::webalize($url);
});
		$router = new RouteList();
		....
		$router[] = new Route('//[www.]domena.cz/<presenter>/<action>/', array(
    		'presenter' => 'Homepage',
    		'action' => 'default',
		));
		$router[] = new Route('//[recenze.]domena.cz/<action>/', array(
		    'presenter' => 'Recenze',
		    'action' => 'default',
		));
		$router[] = new Route('//[<presenter>.]domena.cz/<action>/', array(
		    'presenter' => 'Homepage',
		    'action' => 'default',
		));
		return $router;
	}
}
Moje struktura webu
- domena.cz
 - – www (zde Nette)
 - – subdomains
 - – .htaccess
 - – apache.config
 
.htaccess ze složky domena.cz
RewriteEngine On
RewriteBase /
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^www/
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{HTTP_HOST} ^(www.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/www/%2 -d
RewriteRule (.*) www/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdomains/
RewriteCond %{REQUEST_URI} !^/subdomains/
RewriteCond %{HTTP_HOST} ^(www.)?(.*)\.([^.]*)\.([^.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdomains/%2 -d
RewriteRule (.*) subdomains/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^www/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdomains/[^/]+/(.+[^/])$ /$1/ [R]
# Nette Framework
RewriteCond %{HTTP_HOST} ^(www.)?(.*).([^.]*).([^.]*)$
RewriteCond %{DOCUMENT_ROOT}/www/%2.%3.%4 !-d
RewriteCond %{DOCUMENT_ROOT}/subdomains/%2 !-d
RewriteCond %{HTTP_HOST} ^(www.)?([^.]*).([^.]*){2,4}$
RewriteCond %{REQUEST_URI} !^www/
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{DOCUMENT_ROOT}/www -d
RewriteRule (.*) www/$1 [DPI]
# Nette Framework
#RewriteEngine On
#RewriteRule ^index.php$ - [L]
# uploaded files
#RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
#RewriteCond %{REQUEST_FILENAME} -f [OR]
#RewriteCond %{REQUEST_FILENAME} -d
#RewriteRule ^ - [L]
#RewriteRule . index.php [L]
apache.cofig
<VirtualHost *:80>
    ServerName domena.cz
    ServerAlias www.domena.cz
    DocumentRoot /domains/domena.cz/www
    ErrorLog /domains/domena.cz/logs/error.log
    LogLevel warn
</VirtualHost>
<VirtualHost *:80>
    ServerAlias *.domena.cz domena.cz
    VirtualDocumentRoot /domains/domena.cz/subdomains/%1
    ErrorLog /domains/domena.cz/logs/error.log
    LogLevel warn
</VirtualHost>
<VirtualHost *:80>
    VirtualDocumentRoot /domains/domena.cz/www/%1.domena.cz/
</VirtualHost>
.htaccess ze složky domena.cz/www
RewriteEngine On
# 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
	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|exe|zip|tar\.gz)$ index.php [L]
# enable gzip compression
<IfModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
</IfModule>
mám vlastní VPS server, zkouším to už dlouho a stále se mi to nedaří vyřešit, přitom na jiném webu mi bez problému fungoval router pro jazyky (<lang=cs>.domena.cz/…).
Za pomoc bych byl velice rád. Děkuji
Editoval Zuben45 (15. 1. 2015 2:49)

- Zuben45
 - Člen | 268
 
Jan Endel napsal(a):
Změn pořadí rout, vyhodnocuji se od vrchy nahoru, první dej:
$router[] = new Route('//[<presenter>.]domena.cz/<action>/', array( 'presenter' => 'Homepage', 'action' => 'default', ));
Aha děkuji, tak jsem to nastavil jako první, ovšem pořád stránka Not Found. Nebude problém spíše v .htaccess nebo apache.config ?