У меня небольшие проблемы с файлом .htaccess моего сайта. Я хочу, чтобы страницы page.html и page/URL перенаправлялись на страницу без какого-либо суффикса. Мне удалось удалить .html, но при вводе страницы/URL-адреса я получаю внутреннюю ошибку сервера независимо от того, что я пытаюсь (Apache 2.4.18).Redirect .html и trailing slash
Вот полный код .htaccess (без каких-либо попыток удалить слэш)
Options +FollowSymLinks -Indexes -MultiViews
RewriteEngine on
RewriteBase/
RewriteCond %{HTTP_HOST} ^website\.com$ [NC]
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.website.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
То, что я хотел бы сделать, это просто скопировать последние 6 строк, которые работали на .html, но есть вместо этого он действует на конечную косую черту, но я не уверен, как это сделать или если есть лучшее решение. Любые советы высоко ценится!
спасибо толстыйguru, это похоже на работу! Раньше я пробовал тот же или похожий код под перенаправлением .html, но, поставив его выше, похоже, все работает нормально. Очень ценим! –
Одна странная вещь: когда я набираю mydomain.com/page/, он перенаправляется на mydomain.com//page, а затем, когда я вхожу в mydomain.com/page/, он перенаправляется на mydomain.com/page и переключается между две косые черты и одна косая черта каждый раз. Любая идея, если это возможно? Не так много, поскольку оба работают, но было бы неплохо сохранить его в чистоте. –
Эй @ Л.Тане, это странно ... вы могли бы попробовать добавить дополнительную косую черту в rewriterule, но я не уверен, что это сработает. Я отредактировал свой ответ с правилом, которое должно избавиться от лишних косых черт. – Lag