#regex #.htaccess #mod-rewrite
Вопрос:
Я не могу найти решение для выполнения 2 задач в своем htaccess для моего домена :
1/ -> Перенаправление >https://domain.tld чтобы https://www.domaine.tld (index.php)
2/ -> Переписывание URL-адреса, чтобы он был похож на URL-адрес >https://www.domaine.tld/id зов ведьмы https://www.domain.tld/page.php?id=
Мой htaccess :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.tld [NC]
RewriteRule ^(.*)$ https://www.domain.tld/$1 [L,R=301]
# Redirection page.php?id=
RewriteRule ^([0-9a-zA-Z-] ?)?$ /page.php?id=$1 [L]
С помощью этого htaccess я перенаправлен на страницу.php?id=1$, но если я попытаюсь перейти на индекс, я всегда перенаправлен на page.php
Я знаю, что 2 условия одинаковы, но я не знаю, как это можно исправить.
Есть идея ?
Спасибо 🙂
Комментарии:
1. Замените
^([0-9a-zA-Z-] ?)?$
на^/?(id)
или что-то в этом роде, непонятно, что вы там фиксируете.
Ответ №1:
С вашими показанными попытками, пожалуйста, попробуйте следовать правилам в файле htaccess. Убедитесь, что ваш файл htaccess находится вместе с index.php, page.php файлы.
Перед проверкой URL-адресов обязательно очистите кэш браузера.
RewriteEngine ON
##External redirect with www attached in url.
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]
##Internal rewrite for home pages.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?$ index.php [QSA,L]
##Internal rewrite for non-existing pages.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ page.php=$1 [QSA,L]