Apache Rewrite Engine redirige todas las solicitudes a index.php

Apache Rewrite Engine redirige todas las solicitudes a index.php

Tengo una aplicación web PHP en un servidor web Apache.

La ruta a la aplicación web en el servidor es:/var/www/html/intern/organisation/example_app

La URL de la aplicación web es:
https://www.example.de/org1/intern/example_app/

Quiero que todas las solicitudes, por ejemplo, https://www.example.de/org1/intern/example_app/view1/sean redirigidas a

https://www.example.de/org1/intern/example_app/index.php

En mi servidor XAMPP local utilizo el siguiente archivo .htaccess, que funciona para ese propósito:

RewriteEngine On
RewriteBase /example_app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]

Pero no tengo idea de cómo debería verse ese archivo en el servidor. También uso httpd.conf en el servidor. Me pregunto si ese archivo interfiere con el .htaccessarchivo que se encuentra a continuación:/var/www/html/intern/organisation/example_app/

¿Alguien tiene una idea de cómo configurar la reescritura en el servidor?

Respuesta1

El .htaccessarchivo en el /org1/intern/example_app/subdirectorio debería verse así:

DirectoryIndex index.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Luego puede usar el mismo .htaccessarchivo localmente y en el servidor en vivo, siempre que vaya al example_app/subdirectorio.

Siempre que el .htaccessarchivo esté ubicado en el mismo directorio que el index.phparchivo que desea reescribir, no necesita la RewriteBasedirectiva.

Es probable que la DirectoryIndexdirectiva ya esté configurada index.phpen la configuración del servidor, por lo que puede que no sea necesaria aquí, pero para que esté completa debe incluirse. Es necesario cuando se solicita el directorio de la aplicación (es decir, https://www.example.de/org1/intern/example_app/).

Tenga en cuenta que se trata de una "redirección interna", o más comúnmente denominada "reescritura". Si simplemente dice "redireccionar", entonces eso implica una "redirección externa (HTTP)", que es algo completamente distinto.


Me pregunto si ese archivo interfiere con el .htaccess fileque se encuentra a continuación:/var/www/html/intern/organisation/example_app/

Varios .htaccessarchivos (y la configuración del servidor) pueden entrar en conflicto. Sin embargo, las directivas mod_rewrite en una configuración secundaria (en el mismocontexto, es decir.directorio) anulará completamente las directivas mod_rewrite en la configuración principal (de forma predeterminada).


Aparte:(o posiblemente no)

La ruta a la aplicación web en el servidor es:/var/www/html/intern/organisation/example_app

La URL de la aplicación web es:https://www.example.de/org1/intern/example_app/

Aunque, un poco confuso, ¿la ruta del archivo y la ruta URL no parecen coincidir? ¿Tiene reescritura adicional o Aliasestá configurado en la configuración del servidor, o hay example_appen la ruta del archivo un directorio diferente al example_appde la ruta URL?

Respuesta2

Muchas gracias por las respuestas detalladas. Las Reglas de Reescritura no fueron el problema.

El problema era sencillo. Todo el .htaccess no decía nada porque tuve que activar AllowOveride en httpd.conf.

información relacionada