Skip to content

Instantly share code, notes, and snippets.

@tiagofrancafernandes
Last active March 20, 2024 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagofrancafernandes/a852fe2575e1b9ca5fabc373bac0da7b to your computer and use it in GitHub Desktop.
Save tiagofrancafernandes/a852fe2575e1b9ca5fabc373bac0da7b to your computer and use it in GitHub Desktop.
dev - apache

All requests need pass by index.php file

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

Para fazer com que todas as requisições sejam redirecionadas para um index.php usando um arquivo .htaccess, você pode utilizar o seguinte código:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

Este código faz o seguinte:

  • RewriteEngine On: Ativa o módulo de reescrita do Apache.
  • RewriteCond %{REQUEST_FILENAME} !-f: Verifica se o arquivo solicitado não existe.
  • RewriteCond %{REQUEST_FILENAME} !-d: Verifica se o diretório solicitado não existe.
  • RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]: Redireciona todas as requisições que não correspondem a um arquivo ou diretório existente para index.php, passando o caminho original como um parâmetro de consulta (path).

Este método é útil para frameworks MVC (Model-View-Controller) ou para criar um roteador de URL personalizado, onde index.php é responsável por interpretar a URL e carregar o conteúdo apropriado.

Se você deseja redirecionar todas as requisições, incluindo aquelas para arquivos e diretórios existentes, para index.php, você pode usar o seguinte código:

RewriteEngine on
RewriteRule ^((?!index\.php).+)$ /index.php [L]

Este código redireciona todas as requisições, exceto aquelas direcionadas para index.php, para index.php, evitando assim um loop infinito.

Lembre-se de que o arquivo .htaccess deve estar localizado no diretório raiz do seu projeto ou no diretório específico que você deseja que as regras se apliquem. Além disso, certifique-se de que o módulo mod_rewrite do Apache esteja habilitado no seu servidor para que as regras de reescrita funcionem corretamente [1][2][3][4].

Citations: [1] https://stackoverflow.com/questions/18406156/redirect-all-to-index-php-using-htaccess [2] https://gist.github.com/RaVbaker/2254618 [3] https://slashnode.com/articles/devops/2013-12-24-redirect-all-requests-to-index-php [4] https://serverfault.com/questions/991710/htaccess-to-rewrite-all-files-to-index-php [5] https://stackoverflow.com/questions/38595637/redirect-all-requests-to-index-php-htaccess [6] https://help.dreamhost.com/hc/en-us/articles/215747748-How-can-I-redirect-and-rewrite-my-URLs-with-an-htaccess-file [7] https://serverfault.com/questions/1151511/apache-rewrite-engine-redirect-all-request-to-index-php [8] https://www.reddit.com/r/PHP/comments/v6uld/is_it_wise_to_redirect_everything_to_indexphp_via/ [9] https://joomla.stackexchange.com/questions/32585/how-can-i-redirect-all-index-php-from-urls-to-stop-duplicate-urls [10] http://fangorn.thijma.nl/news/redirecting-all-requests-to-index-php-with-htaccess

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment