Pretty urls not working (404) – Router does nothing
- romanko
- Member | 4
Hello,
I want to implement pretty urls on my page, e.g. like that:
localhost/example/news/show/6
I get only 404 Not Found when navigating my browser to that url.
Code in my RouterFactory:
public static function createRouter()
{
$router = new RouteList;
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
Part of the template with link:
<p> {$new->text|truncate:50:" ..."} <a n:if="strlen($new->text) > 50" n:href="News:show $new->id">>Show the whole article</a></p>
Presenter of the page link is pointing to:
<?php
namespace App\Presenters;
use Nette,
Nette\Application\UI\Form;
class NewsPresenter extends BasePresenter
{
/** @var Nette\Database\Context */
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function renderShow($id)
{
$new = $this->database->table('news')->get($id);
if (!$post) {
$this->error('Post not found');
}
$this->template->new = $new;
}
}
I am using apache2, linux mint 17.2 64bit,
access rights are set to +rwx to entire folder where my project resides,
mod_rewrite is enabled.
When I change Router to SimpleRouter in RouterFactory, everything works, except URL parameters are used for routing, what is not acceptable.
Does somebody know what is going on?
Thank you
- GEpic
- Member | 566
romanko wrote:
ModRewrite enabled
AllowOverride set to all (was None before)
Apache restartedStill doesn't work.
I had the same problem and I searched for a long time, this works for me: (in www folder of course)
<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>
Last edited by GEpic (2016-01-07 16:20)