
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 .htaccess
archivo 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 .htaccess
archivo 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 .htaccess
archivo localmente y en el servidor en vivo, siempre que vaya al example_app/
subdirectorio.
Siempre que el .htaccess
archivo esté ubicado en el mismo directorio que el index.php
archivo que desea reescribir, no necesita la RewriteBase
directiva.
Es probable que la DirectoryIndex
directiva ya esté configurada index.php
en 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 file
que se encuentra a continuación:/var/www/html/intern/organisation/example_app/
Varios .htaccess
archivos (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 Alias
está configurado en la configuración del servidor, o hay example_app
en la ruta del archivo un directorio diferente al example_app
de 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.