Назад | Перейти на главную страницу

Apache: переписать структуру правил, чтобы сохранить URL-адреса папок при обслуживании файлов .html из корня

Я занимаюсь преобразованием динамического сайта в статический из-за давних проблем с обновлением CMS. Основная проблема заключается в сохранении ссылок поисковых систем, которые в настоящее время указывают на URL-адреса папок.

Новый статический сайт имеет следующую структуру папок (с index.html и article.html в корневом каталоге):

root
|--index.html
|--articles.html
|--articles
│  |--view
│     |--article_name.html

Я создал следующие правила перезаписи в файле .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !\.(html|css|js|less|jpg|png|gif)$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.html

Это имеет желаемый эффект для большинства URL-адресов: существующие URL-адреса, указывающие на www.website.com/articles/view/article_title, отображаются как таковые и правильно загружают страницу.

Однако URL-адрес www.website.com/articles вместо этого загружает представление папки для папки статей, где желаемый результат состоит в том, что он загружает article.html, сохраняя www.website.com/articles в качестве отображаемого URL-адреса.

Лучшее, что мне удалось, - это переписать запрос для www.website.com/articles для загрузки страницы с отображаемым URL-адресом www.website.com/articles.html, используя следующее:

RewriteRule ^https://www.website.com/articles/?$ articles.html

Это работает, но не идеально, так как любые ссылки поисковых систем, указывающие на www.website.com/articles, теперь отображают html-файл в URL-адресе.

Есть ли способ обработать запрос на article.html таким образом, чтобы я мог сохранить URL-адрес www.website.com/articles? Или мне нужно переместить article.html в папку статей и обслуживать его оттуда?