Tenho cerca de 25000 URLs do meu site antigo que têm abc na URL.
Eu quero usar 3 arquivos DBM no meu conf apache.
O objetivo é que o URL não contenha abc, por exemplo. http://example.com/1234.htm
, então eu não quero que o arquivo abcredirects.DBM seja visto.
Se o URL não contiver abc, por exemplo. http://example.com/abc1234.htm
, só quero que o arquivo abcredirectsDBM seja examinado.
Eu estou tentando usar uma declaração if no meu Apache, mas sempre que eu usar o bloco <If>
, tudo o que eu colocar dentro parece ser ignorado.
Alterei a linha <If "%{REQUEST_URI} =~ m#^abc#">
de muitas formas diferentes, mas isso não importa. Se eu remover o bloco <if>
, todos os redirecionamentos funcionarão conforme o esperado.
Por que meu bloco <if>
está sendo ignorado? Não há erro e, de acordo com os registros, http://example.com/abc1234.htm
(estou assumindo) não está sendo avaliado como verdadeiro, então não tenho certeza do que mais verificar.
[root@mail conf]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Jun 27 2018 13:48:59
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteMap abcredirects "dbm:/etc/httpd/conf/dbm/abcredirects.dbm"
<If "%{REQUEST_URI} =~ m#^abc#">
RewriteCond ${abcredirects:$1} !=""
RewriteRule ^(.*) /${abcredirects:$1} [R=301,L]
</If>
RewriteMap shortalias "dbm:/etc/httpd/conf/shortalias.dbm"
RewriteCond ${shortalias:$1} !=""
RewriteRule ^(.*) /${shortalias:$1} [R=301,L]
</IfModule>
<VirtualHost *:80>
DocumentRoot /var/www/sites/me
ServerName example.com
DirectoryIndex index.htm
Options +FollowSymLinks
RewriteEngine On
RewriteOptions Inherit
RewriteMap otherredirects "dbm:/etc/httpd/conf/otherredirects.dbm"
RewriteCond ${otherredirects:$1} !=""
RewriteRule ^(.*) /${otherredirects:$1} [R=301,L]
</VirtualHost>
Perguntas de falha do servidor que vi e tentei:
força do apache se o url tiver redirecionamento de padrão específico para https
Redirecionar, alterar URLs ou Redirecionar HTTP para HTTPS no Apache - Tudo o que você sempre quis saber sobre as regras do Mod_Rewrite, mas tinha medo de perguntar