The requested URL was not found on this server
- Joacim
- Člen | 229
Mám base presenter, který přesměruje uživatele na login page pokud není přihlášen, bohužel dostanu hlášku
Not Found
The requested URL /test-mvc/www/login/ was not found on this
server.
Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 80
Nainstalováno přes composer na Win7 64b | Wamp server | mod_rewrite na Apachy povolen
Koukal jsem na starší příspěvky, ale nic co jsem zkusil mi nepomohlo
Router
class RouterFactory {
/**
* @return \Nette\Application\IRouter
*/
public static function createRouter() {
$router = new RouteList();
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
}
/www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase /
RewriteBase http://localhost/test-mvc/www/
# 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>
Basepresenter
abstract class BasePresenter extends Nette\Application\UI\Presenter {
public function beforeRender() {
parent::beforeRender();
if ($this->getUser()->isLoggedIn()) {
$this->template->userLogged = $this->user->identity->getId();
} else {
$this->template->userLogged = FALSE;
}
}
public function startup() {
parent::startup();
if (!$this->getUser()->isLoggedIn() && ($this->getName() !== "Login")) {
$this->redirect("Login:default");
}
}
}
Zkoušel jsem variantu s rewritebase / i bez ní(zakomentováno) + to co je tam ted plná cesta k www, ale vždy stejná hláška
Editoval Joacim (9. 5. 2015 18:25)
- Joacim
- Člen | 229
RewriteBase /test-mvc/www/
RewriteBase /
# RewriteBase /
Ani jedna nefunguje, vždy jsem pro jistotu restartoval všechny služby apache
Edituji vždy jen /www/.htaccess
Z logu Apache se nedá nic vyčíst pod WIN
/test-mvc/ mám nastavený v aliasech v apachy(alias adresáře)
Editoval Joacim (9. 5. 2015 20:19)
- Joacim
- Člen | 229
Používám Netbeans pro vývoj a u projektu po kliknutí pravým se mi nabízí možnosti composeru → instal (no-dev) → to mi vypíše:
Loading composer repositories with package information
Updating dependencies
Nothing to install or update
Generating autoload files
Done.
To byla první věc, kterou vždy dělám, pokud něco nefunguje – jen pro jistotu
Nastavení Apache a aliasů
Alias /test-mvc/ "c:/Users/joacim/test-mvc/"
<Directory "c:/Users/joacim/test-mvc/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
Výběr z httpd.conf
ServerRoot "C:/Utils/wamp/bin/apache/apache2.4.9"
Define APACHE24 Apache2.4
LoadModule rewrite_module modules/mod_rewrite.so
ServerName localhost:80
HostnameLookups Off
DocumentRoot "C:/Utils/wamp/www/"
V .htaccess v rootu nic není (je to pouze pro produkci)
Nemá někdo ponětí v čem by mohla být chyba ? Když nemám v basepresenteru redirect tak nete funguje, ale podstránky už ne. Když jsem přesunul projekt z alias adresáře do složky www apache vše funguje jak má, ale to pro mě není řešení.
Editoval Joacim (10. 5. 2015 15:15)
- Joacim
- Člen | 229
Tak jsem se s tím „sral“ celej den a nakonec jsem to rozchodil, doufám že můj návod pomůže i ostatním.
Nejprve si zkontrolujte zda máte povolen mod_rewrite a mod_alias.
Používám aliasy jelikož mám hodně různých projektů.
www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /test-mvc/www/
# + zbytek
</IfModule>
httpd.cong – asi nejdůležitější
<Directory />
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
</Directory>
Include "C:/Utils/wamp/alias/*"
<Directory c:/Users/joacim/test-mvc/>
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
</Directory>
a samotný alias
Alias /scode-mvc/ "c:/Users/joacim/test-mvc/"
<Directory "c:/Users/joacim/test-mvc/">
Options +Indexes +FollowSymLinks +MultiViews
Order allow,deny
Allow from all
</Directory>
Editoval Joacim (10. 5. 2015 21:24)