Como o meuh mencionou nos comentários, quando o mod_rewrite é usado em arquivos .htaccess
por diretório, não há um prefixo de barra no caminho da URL que corresponda ao padrão RewriteRule
. O prefixo de diretório (que sempre termina em uma barra ) é removido pela primeira vez.
No entanto, suas diretivas também estão na ordem errada e podem ser arrumadas. A diretiva RewriteCond
se aplica ao único RewriteRule
que segue. Você inseriu o RewriteRule
entre essas diretivas, então você efetivamente mudou a lógica. Mas essas duas diretivas RewriteRule
podem ser facilmente combinadas e essa diretiva RewriteCond
parece supérflua.
A menos que você precise especificamente da diretiva RewriteOptions
, eu a removerei. Isso pode ter sido exigido no host anterior.
Tente o seguinte:
RewriteEngine on
RewriteRule ^(forums/content/)?$ http://example.com/forums/content.php [R=301,L]
O padrão ^(forums/content/)?$
corresponde a /forums/content/
ou simplesmente /
, que corresponde ao% originalRewriteRule
.
Eu removi a diretiva RewriteCond
que foi verificada em relação a HTTP_HOST
. Eu suponho que deveria ter correspondido algo (ou seja, não nada). No entanto, simplesmente correspondia qualquer coisa que seria sempre verdadeira, o que parece ser um pouco inútil.
Não é necessário que todas as barras invertidas escapem na RewriteRule
substituição . Esta é uma string comum, não uma regex. (Esse tipo de fuga desnecessária é típico do cPanel.)
UPDATE: você precisará garantir que o MultiViews não esteja ativado. Isso pode ser desativado com a diretiva Options
perto da parte superior do arquivo .htaccess
:
Options -MultiViews
Se você tiver as diretivas Options
, isso pode ser combinado, por exemplo:
Options -MultiViews +FollowSymLinks
Como /forums
é um diretório físico, se o MultiViews estiver ativado, isso pode resultar na modificação de uma solicitação interna para content.php
(ou mesmo algo como content.html
se existir) antes que o mod_rewrite seja capaz de acionar o redirecionamento.