samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer

Как сделать ЧПУ при помощи PHP?

Добрый день!

Настроил в проекте ЧПУ, все работает, читал много мануалов по настройке .htaccess, пробовал разные варианты, но не получается только одна вещь!

при использовании /test-test2-test3 - все работает отлично
а при использовании /test/test2/test3 - он начинает искать уже директорию /test/ и из нее запускать дальнейшее.

Код .htaccess:

AddDefaultCharset off
IndexOptions +Charset=UTF-8

DirectoryIndex index.php
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php?%{QUERY_STRING}
  • Вопрос задан
  • 5464 просмотра
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Это странно, код правильный, у меня такой работает.
От себя могу порекомендовать все таки вместо
RewriteRule ^(.*) index.php?%{QUERY_STRING}
использовать конструкцию вида
RewriteRule ^(.*)$ index.php?q=$1 [QSA,L]
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
somenumboola
@somenumboola
Team Lead in B-online Solutions
Я сомневаюсь, но попробуйте после
RewriteRule ^(.*)
Добавить символ окончания строки $
Таким образом:
#...
RewriteRule ^(.*)$ index.php?%{QUERY_STRING}
#...
Ответ написан
@cloud-habr
Попробуйте реализовать так
ЧПУ на PHP. Прочь от ModeRewrite правил. Единая то...
или пропишите все вручную
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z-]+)/test/([0-9]+)(/?)$ ?category=$1&page=$2
Ответ написан
Комментировать
nulldef
@nulldef
Senior Software Developer
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?r=$1
Ответ написан
Комментировать
BuriK666
@BuriK666
Компьютерный псих
Добавьте
RewriteBase /
Ответ написан
Комментировать
toxa82
@toxa82
RewriteEngine On
RewriteBase /

# REQUEST_FILENAME - перенаправление всего, кроме существующих файлов
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]

Введенный uri получаю из $_SERVER['REQUEST_URI']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы