.htaccess mod перезаписать 301-перенаправление
-
09-06-2019 - |
Вопрос
Я хочу:все ссылки, которые не содержат имени файла (не .html, .jpg, .png, .css) перенаправляют с состоянием 301 в каталог, например: http://mysite.com/article -> http://mysite.com/article/ Но http://mysite.com/article/article-15.html не перенаправляет.Какое регулярное выражение я должен написать в .htaccess для добавления косой черты в виртуальные каталоги?
Решение
Я думаю, что может сработать следующее:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
Однако, когда дело доходит до mod_rewrite, я никогда не могу быть уверен без тестирования...
Другие советы
Необходимы разъяснения:
Учитывая URL-адрес:http://server/path/file
Перенаправляется ли это на:http://server/path/
Или он перенаправляется на:http://server/path/file/
Как в:Вы хотите, чтобы перенаправления шли по родительскому пути, или вы просто хотите добавить косую черту и предположить, что каталог находится вне текущего пути?
Приведенный выше RewriteRule MB завершится неудачей для таких путей, как /a
потому что он должен соответствовать по крайней мере двум символам после косой черты.Более того, он совпадает только с URL-адресами верхнего каталога.
RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}/$1/ [R=301,L]
Является ли целью этого уменьшение загрязнения истории / ложноотрицательных результатов?