Я нашел в Интернете хорошо работающий код .htaccess, в котором было удалено расширение .html и добавлена косая черта в конце URL-адреса.
Однако, когда я ссылаюсь на сайт в подкаталоге, это не работает, подкаталог автоматически стирается в URL-адресе, поэтому страница не загружается.
Вот мой код .htaccess:
AddHandler application/x-httpd-php71 .php
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/$ $1.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
У меня также есть тот же самый .htaccess в указанном подкаталоге, и я не уверен, что это правильный способ сделать это.
Возможно, мне придется добавить, что я совсем новичок в кодировании, я только начал собирать обновление своего веб-сайта, в основном путем обширных поисков в Google по кодированию, но я действительно не знаю, что делаю.
Кто-нибудь знает, как я могу исправить эту проблему?
Изменить: для пояснения я могу добавить, что подкаталог, о котором я говорю, является частью того же веб-сайта, поэтому некоторые его части я хотел бы сохранить в подкаталоге только для того, чтобы все было организовано.
У меня также есть тот же самый .htaccess в указанном подкаталоге, и я не уверен, что это правильный способ сделать это.
Что ж, это действительно зависит от вашей структуры URL и количества сегментов пути. "Хорошо работающий" .htaccess
опубликованный вами код работает только с отдельными сегментами пути, т.е. файлы в корне документа.
Однако повторять это не нужно. .htaccess
файл в подкаталоге. На самом деле, эти директивы неверны, если используются в подкаталоге - вероятно, поэтому ваш подкаталог «стирается». Последняя строка (RewriteRule (.*)$ /$1/ [R=301,L]
) удалит подкаталог из перенаправленного запроса при использовании внутри подкаталога.
Вместо этого попробуйте:
Удалить .htaccess
файл в подкаталоге.
Измените следующую директиву:
RewriteRule ^([^/]+)/$ $1.html
Читать:
RewriteRule ^(.+)/$ $1.html
Чтобы настроить таргетинг на любой уровень каталога. В противном случае он ограничивается нацеливанием только на файлы в корне документа.