У меня есть следующий код в моем файле .htaccess. Он перенаправляет не www на www, удаляет косую черту из URL, удаляет .php из URL и загружает index.php из URL каталога без косой черты. Это все работает отлично.
Проблема в том, что когда я набираю "www.notmysite.co.uk/hello/index", он не удаляет часть ссылки "/ index" и не перенаправляет. Как я могу адаптировать код, чтобы он это сделал?
Например:
www.notmysite.co.uk / Articles / Index -> www.notmysite.co.uk/articles (НЕ работает)
www.notmysite.co.uk / Articles / Index.php -> www.notmysite.co.uk/articles (Рабочая)
www.notmysite.co.uk / Articles / -> www.notmysite.co.uk/articles (Рабочая)
www.notmysite.co.uk / contact.php -> www.notmysite.co.uk/contact (Работающий)
В (не работающем) примере он загружает страницу, просто не перенаправляет на правильный URL.
DirectorySlash Off
RewriteEngine On
RewriteBase /
# Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
# Remove all trailing slash if any
RewriteRule ^(.*)/$ /$1 [R=301,L]
# Redirect all .php extension to no extension
RewriteCond %{THE_REQUEST} .+\.php [NC]
RewriteRule ^(.*?)(\/index)?\.php$ $1 [R,L]
# Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
# Load index page when url is directory
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ $1/index.php [NC,L]