Вопрос

Я хочу:все ссылки, которые не содержат имени файла (не .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]

Является ли целью этого уменьшение загрязнения истории / ложноотрицательных результатов?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top