.htaccess mod reescrever redirecionamento 301
-
09-06-2019 - |
Pergunta
Eu quero:todos os links que não continham nome de arquivo (não .html, .jpg, .png, .css) redirecionam com estado 301 para o diretório, por exemplo: http://meusite.com/article -> http://meusite.com/article/Mas http://meusite.com/article/article-15.html não redireciona.Qual expressão regulatória devo escrever em .htaccess para adicionar barra aos diretórios virtuais?
Solução
Eu acho que o trabalho seguinte poder:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
Quando se trata de mod_rewrite Eu nunca pode ter certeza sem testar embora ...
Outras dicas
Clarificação necessária:
Dada a url: http: // servidor / caminho / arquivo
O que redirecionado para: http: // server / path /
Ou será que redirecionado para: http: // servidor / caminho / arquivo /
Como em: Você quer os redirecionamentos para ir para o caminho do pai, ou você apenas deseja adicionar uma barra e assumir diretório fora do caminho atual
? RewriteRule da MB acima falhará em caminhos como /a
porque ele precisa corresponder a pelo menos dois caracteres depois da barra. Além disso, corresponde apenas em URLs diretório superior.
RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}/$1/ [R=301,L]
O objetivo deste para reduzir história poluição / falsos negativos?