
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 .htaccess
arquivo que está abaixo:/var/www/html/intern/organisation/example_app/
Alguém tem ideia de como configurar a reescrita no Servidor?
Responder1
O .htaccess
arquivo 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 .htaccess
arquivo localmente e no servidor ativo, desde que ele esteja no example_app/
subdiretório.
Desde que o .htaccess
arquivo esteja localizado no mesmo diretório do index.php
arquivo que você deseja reescrever, você não precisará da RewriteBase
diretiva.
A DirectoryIndex
diretiva provavelmente já está definida index.php
na 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 file
que está abaixo:/var/www/html/intern/organisation/example_app/
Vários .htaccess
arquivos (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 Alias
configurada na configuração do servidor ou example_app
o caminho do arquivo é um diretório diferente do example_app
caminho 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.