Apache Rewrite Engine redireciona todas as solicitações para index.php

Apache Rewrite Engine redireciona todas as solicitações para index.php

Eu tenho um aplicativo web PHP em um servidor web Apache.

O caminho para a aplicação web no servidor é:/var/www/html/intern/organisation/example_app

A URL para o aplicativo da web é:
https://www.example.de/org1/intern/example_app/

Eu quero que todas as solicitações, por exemplo, https://www.example.de/org1/intern/example_app/view1/sejam redirecionadas para

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

No meu servidor XAMPP local eu uso o seguinte arquivo .htaccess, que funciona para esse fim:

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

Mas não tenho ideia de como esse arquivo deve ficar no servidor? Eu também uso um httpd.conf no servidor. Gostaria de saber se esse arquivo interfere no .htaccessarquivo que está abaixo:/var/www/html/intern/organisation/example_app/

Alguém tem ideia de como configurar a reescrita no Servidor?

Responder1

O .htaccessarquivo no /org1/intern/example_app/subdiretório deve ficar assim:

DirectoryIndex index.php

RewriteEngine On

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

Você pode então usar o mesmo .htaccessarquivo localmente e no servidor ativo, desde que ele esteja no example_app/subdiretório.

Desde que o .htaccessarquivo esteja localizado no mesmo diretório do index.phparquivo que você deseja reescrever, você não precisará da RewriteBasediretiva.

A DirectoryIndexdiretiva provavelmente já está definida index.phpna configuração do servidor, portanto pode não ser necessária aqui, mas para completar ela deve ser incluída. É necessário quando o próprio diretório do aplicativo é solicitado (ou seja, https://www.example.de/org1/intern/example_app/).

Observe que este é um "redirecionamento interno" ou mais comumente conhecido como "reescrita". Se você simplesmente disser "redirecionar", isso implica um "redirecionamento externo (HTTP)", que é algo totalmente diferente.


Gostaria de saber se esse arquivo interfere no arquivo .htaccess fileque está abaixo:/var/www/html/intern/organisation/example_app/

Vários .htaccessarquivos (e a configuração do servidor) podem entrar em conflito. No entanto, as diretivas mod_rewrite em uma configuração filha (no mesmocontexto, ou seja.diretório) substituirá completamente as diretivas mod_rewrite na configuração pai (por padrão).


Aparte:(ou possivelmente não)

O caminho para a aplicação web no servidor é:/var/www/html/intern/organisation/example_app

A URL para o aplicativo da web é:https://www.example.de/org1/intern/example_app/

Embora, um pouco confuso, o caminho do arquivo e o caminho da URL não pareçam corresponder? Você tem reescrita adicional ou Aliasconfigurada na configuração do servidor ou example_appo caminho do arquivo é um diretório diferente do example_appcaminho da URL?

Responder2

Muito obrigado pelas respostas detalhadas. As regras de reescrita não eram o problema.

O problema era simples. Todo o .htaccess não foi escrito porque tive que ativar AllowOveride no httpd.conf.

informação relacionada