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?

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top