Apache alias + routy

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

Mám na localhostu v apachi definovaný alias:

Alias /runescapewikicz "C:/xampp/htdocs/rswcz/document_root/"

Když přes něj přistupuji ke své aplikaci a mám nastaveny routy, laděnka mi vypíše při jakémkoliv jiném požadavku než Default:default chybu:

BadRequestException #404

Cannot load presenter 'Runescapewikicz', class 'RunescapewikiczPresenter' was not found in 'C:\xampp\htdocs\rswcz\document_root/../app/presenters/RunescapewikiczPresenter.php'.

Při přístupu přes normální (nealiasovou) adresu (http://localhost/…cument_root/…) fungují routy normálně…

Tomik
Nette Evangelist | 485
+
0
-

A jaké máš Routy?

Aurielle
Člen | 1281
+
0
-
// Set routes
$router = $application->getRouter();

// Filter table
Route::setStyleProperty('presenter', Route::FILTER_TABLE, array(
	'uzivatel' => 'User',
	'aktualizace' => 'Rsnews',
));

Route::setStyleProperty('action', Route::FILTER_TABLE, array(
	'prihlaseni' => 'login',
	'registrace' => 'register',
	'zapomenute-heslo' => 'forget',
	'archiv' => 'archive',
));

// Canonication
$router[] = new Route('index.php', array(
	'presenter' => 'Default',
	'action' => 'default',
), Route::ONE_WAY);

// RSNews route
$router[] = new Route('aktualizace/<id>', array(
	'presenter' => 'Rsnews',
	'action' => 'default',
));

// Feed
$router[] = new Route('rss.xml', array(
	'presenter' => 'Rss',
	'action' => 'default',
));

// General route
$router[] = new Route('<presenter>/<action>/<id>', array(
	'presenter' => 'Default',
	'action' => 'default',
	'id' => NULL,
));
Tomik
Nette Evangelist | 485
+
0
-

Zřejmě se jedná o bug, protože pokud toto chování u sebe simuluji, Nette považuje v takové případě http://localhost/ za root pro web, i když to je až http://localhost/runescapewikicz/, chybně tedy řetězec runescapewikicz naparsuje podle poslední Routy…

Na toto

<?php
  $uri = Environment::getHttpRequest()->getUri();

  Debug::dump($uri->getBaseUri);
?>

Nette vrací http://localhost/, i když by asi mělo vracet http://localhost/runescapewikicz/.

Davide?

_Martin_
Generous Backer | 679
+
0
-

Nepomůže nastavit hodnotu RewriteBase?

Aurielle
Člen | 1281
+
0
-

Pomůže, nicméně při nenastaveném RewriteBase by měly routy fungovat na obou adresách, a takhle je to buď a nebo…

(při nastavení RewriteBase na /runescapewikicz/ funguje http://localhost/…wikicz/routa, ale http://localhost/…nt_root/rout hází No route for HTTP request.)

David Grudl
Nette Core | 8152
+
0
-

Zřejmě se správně neprovede detekce adresy document_rootu.

$request = Environment::getHttpRequest();
echo $request->uri->scriptPath; // co to vypíše?

// oprava
$fixedUri = clone $request->uri;
$fixedUri->scriptPath = '/runescapewikicz/';
$request->uri = $fixedUri;
Aurielle
Člen | 1281
+
0
-

oživení…

$request = Environment::getHttpRequest();
echo $request->uri->scriptPath; // co to vypíše?

vypíše /

David Grudl
Nette Core | 8152
+
0
-

Ale mělo by vypsat '/runescapewikicz/', takže buď fixnout v .htaccess nebo bootstrapu výše uvedeným kódem.