Я пытаюсь использовать .htaccess
, чтобы создать красивые URL для моего сайта. Вот код:
RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.php
RewriteCond %{THE_REQUEST} ^GET\ /post\.php\?id=([^\s&]+)&name=([^\s&]+) [NC]
RewriteRule ^ /post/%1/%2$ [R=301,L,NE]
RewriteRule ^post/([^/]+)/([^/]+)/?$ post.php?id=$1&name=$2 [NC,L]
И внутри моей post.php
страницы у меня есть простой счетчик просмотров:
$url = substr($_SERVER['REQUEST_URI'],1);
$url = explode('/',$url);
$id_post = $purifier->purify($url[1]);
$post = $db->selectone("select p.*, u.username from tx_post p inner join user u on p.id_user = u.id_user where id_post = :id_post",[':id_post'=>$id_post]);
echo 'VIEWS:'.$post['views'].'<br>';
$views = $post['views']+1;
echo 'views after:'.$views.'<br>';
$db->update('tx_post',['views'=>$views],'id_post='.$id_post);
Теперь вот моя проблема: когда я go к URL example.com/post/78
(без конечного пункта sh) все работает отлично. Счетчик получает то, что находится в базе данных, и увеличивает его на 1, как и положено. Однако, если я поставлю окончательное значение sla sh (example.com/post/78/
), счетчик увеличится до 26. Очевидно, то же самое происходит, когда я передаю другой параметр (например, как я собираюсь это сделать - example.com/post/78/postname/
).
Счетчик не имеет никакого другого приращения на странице, поэтому я предполагаю, что он выполняет страницу несколько раз (если это вообще возможно, я не знаю много о веб-серверах).
Любые идеи что может быть причиной этого?