Tengo una regla de reescritura en un archivo .htaccess pero no puedo hacer que funcione correctamente:
RewriteRule ^(?!(redirect-build)) redirect-build/index.php?url=$1La referencia inversa $1 no se captura y Apache vuelve a escribir el parámetro de URL sin ningún valor. Aquí hay un fragmento del archivo de registro:
[Fri Mar 13 13:46:26.254929 2020] [rewrite:trace2] [pid 10612:tid 1344] mod_rewrite.c(477): [client 127.0.0.1:58838] 127.0.0.1 - - [domain/sid#1c4a1bda5b0][rid#1c4a2df8180/initial] [perdir D:/document-root/path/to/directory/] rewrite 'zalety-jablek' -> 'redirect-build/index.php?url=' [Fri Mar 13 13:46:26.254929 2020] [rewrite:trace3] [pid 10612:tid 1344] mod_rewrite.c(477): [client 127.0.0.1:58838] 127.0.0.1 - - [domain/sid#1c4a1bda5b0][rid#1c4a2df8180/initial] split uri=redirect-build/index.php?url= -> uri=redirect-build/index.php, args=url=¿Hay alguna solución?
Ejemplo:
example.com/some-pathdebe resolverse en:example.com/redirect-build/index.php?url=some-path
En ese caso, debe ajustar su patrón RewriteRule para permitir que coincida y capture un valor como este:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([\w-]+)/?$ redirect-build/index.php?url=$1 [L,QSA,NC]([\w-]+) es un grupo de captura para hacer coincidir y capturar 1+ de cualquier carácter de palabra o un guiónRewriteCond se usa para omitir archivos y directorios existentes de esta reescritura