Как можно удалить лишние символы из URL с помощью файла .htaccess?

Как правильно настроить правило в файле .htaccess, чтобы URL mysite.ru/folder/page.html открывался по адресу mysite.ru/page?
  • 11 апреля 2025 г. 13:14
Ответы на вопрос 2
Чтобы перенаправить URL с адреса `mysite.ru/folder/page.html` на `mysite.ru/page` с помощью файла `.htaccess`, вы можете использовать директиву `RewriteRule` вместе с модулем `mod_rewrite`. 

Убедитесь, что у вас включен модуль `mod_rewrite` на вашем сервере. Затем добавьте следующие строки в ваш файл `.htaccess`, который обычно находится в корневой директории вашего сайта:

```apache
RewriteEngine On

# Перенаправление с mysite.ru/folder/page.html на mysite.ru/page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/(.*)\.html$ /$1 [R=301,L]
```

### Пояснение к коду:

- `RewriteEngine On` — включает механизм переписывания URL.
- `RewriteCond %{REQUEST_FILENAME} !-f` — эта условие проверяет, существует ли запрашиваемый файл. Если он не существует, условие пропускает дальнейшую обработку.
- `RewriteCond %{REQUEST_FILENAME} !-d` — это условие проверяет, существует ли запрашиваемая директория. Если она не существует, условие пропускает дальнейшую обработку.
- `RewriteRule ^folder/(.*)\.html$ /$1 [R=301,L]` — здесь происходит само перенаправление. Шаблон `^folder/(.*)\.html$` соответствует URL, который вы хотите перенаправить. Ваша конструкция `/$1` строит новый адрес, ссылаясь на часть URL, которая идет после `folder/` (то есть `page`), а `R=301` указывает, что это постоянное (301) редирект, а `L` указывает, что это последнее правило и дальнейшая обработка не нужна.

### Примечание:
Убедитесь, что у вас нет конфликтующих правил в вашем файле `.htaccess`, чтобы это правило корректно работало. Также протестируйте перенаправление после внесения изменений, чтобы убедиться, что всё работает, как задумано.
попробуй: 
RewriteEngine On
RewriteRule ^([^/]+)$ /folder/$1.html [L]
Похожие вопросы