ЧПУ .htaccess. Не открываются страницы
Не открываются URL-ссылки, только чпу в адресной строке. Алиасы и url хранятся в db. Базовый htaccess
RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /?%{QUERY_STRING}
URL
/?view=section&id=1
/?view=article&id=1
/?view=reg
В RewriteRule $1 хранится алиас, но где статический URL непонятно
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Попробуйте вот так:
# Включить RewriteEngine и резолвить симлинки
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
# Пропускать существующие файлы и папки
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Обрабатываем сначала статичные URL
# три примера:
RewriteCond %{QUERY_STRING} ^view=section&id=([0-9]+)$ [NC]
RewriteRule ^$ /index.php?view=section&id=%1 [L]
RewriteCond %{QUERY_STRING} ^view=article&id=([0-9]+)$ [NC]
RewriteRule ^$ /index.php?view=article&id=%1 [L]
RewriteCond %{QUERY_STRING} ^view=reg$ [NC]
RewriteRule ^$ /index.php?view=reg [L]
# Уже после обрабатываем ЧПУ
RewriteRule ^(.*)$ index.php?alias=$1 [L,QSA]
Вот как это работает:
- Сначала обрабатываются статические URL:
Когда приходит запрос вида
/?view=section&id=1
, он обрабатывается первым блоком правил%1
содержит значение из первой круглой скобки в RewriteCond
- Затем обрабатываются ЧПУ:
- Если URL не соответствует статическим шаблонам, срабатывает последнее правило
$1
содержит алиас из URL ФлагQSA
(Query String Append) позволяет добавлять дополнительные параметры
- В PHP можно получить:
// Для статических URL
$view = $_GET['view'];
$id = $_GET['id'];
// Для ЧПУ
$alias = $_GET['alias'];