Я у себя делал так на PHP для индексных файлов.
Или так для внутренних. Кто знает правильнее - пусть поправит. Строка - самая первая в файле идет.
А если через .htaccess?
Огромное спасибо. Стало все понятно.
Еще интересный вопрос, а как сделать чтобы example.php?белиберда редиректил на example.php
и в чем отличие этих строчек -
RewriteRule ^([^\.]+)$ /$1.php [R=301,L]
и
RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]
Никто не в курсе?
Используйте ChatGPT, неужели это так трудно?
Эти строчки являются правилами перезаписи для файлов .htaccess веб-сервера Apache. Они выполняются при обработке веб-запроса и изменяют путь к запрашиваемому файлу.
Вот примеры, как они могут работать:
1) RewriteRule ^([^\.]+)/$ /$1.php [L]
Это правило говорит серверу, что если путь запроса имеет следующий формат: /любое_слово/, то он должен перенаправить запрос на /любое_слово.php. Например, если запросить /example/, сервер будет искать файл example.php.
2) RewriteRule ^([^\.]+)$ /$1.php [L]
Это правило аналогично первому, только в случае, если путь запроса не заканчивается слешем. Таким образом, если запросить /example, сервер снова будет искать файл example.php.
3) RewriteRule ^(.*)[\\/]$ /$1 [R=301,L]
Это правило говорит серверу, что если путь запроса оканчивается слешем, то он должен перенаправить запрос на тот же путь без слеша, используя код 301 (перманентное перенаправление). Например, если запросить /example/, сервер будет перенаправлять на /example.
4) RewriteCond %{QUERY_STRING} ^(.+) [NC]
Это правило удаляет параметры запроса из URL-адреса. Например, если запросить /example.php?param=value, этот правило удалит параметр и перенаправит на /example.php без параметров.
Еще просьба, поясните кто разбирается, что это за строчки, что они делают?
RewriteRule ^([^\.]+)/$ /$1.php [L]
RewriteRule ^([^\.]+)$ /$1.php [L]
RewriteRule ^(.*)[\\/]$ /$1 [R=301,L]
Лучше на примере.
Наугад пишу, за работу не ручаюсь, я в апачах не очень разбираюсь.
Этот не сработал.
Сработал из вашей ссылки -
RewriteCond %{THE_REQUEST} ^[^\s]+\s+[^?]*?\?
RewriteCond %{QUERY_STRING} ^$
RewriteRule .? %{REQUEST_URI}? [R=301,L]
Отлично. Это работает.
Пока делал, заметил ее вот такой баг, если набрать site.ru/stranica.php? то страница показывается
как опять таки сделать чтобы сработал редирект на site.ru/stranica.php