Htaccess перезапись не www в www /и/ домен.tld/id в домен.tld/страница.php?id=

#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]