Isso está me enlouquecendo e eu não entendo como isso funciona automaticamente. Eu tenho o nginx como meu servidor web e instalei o Joomla que possui regravação de URL, o que remove o index.php
da URL. Antes, quando eu estava usando o Apache, eu tinha que habilitar o .htaccess com RewriteEngine On
para que isso funcionasse. Mas com o Nginx, quando eu habilito "Use URL Rewriting" ele funciona automaticamente. Eu só uso o Nginx que passa os arquivos php para php-fpm. Isso é tudo. Eu não adicionei nenhuma regra de reescrita especial além do que foi dado nos documentos do Joomla. Eu não entendo como 'Use URL Rewriting' funciona automaticamente quando eu o habilito, pois não há .htaccess para Nginx.
Os documentos do Joomla neste tópico não ajudaram nem um nem o outro. Na segunda etapa, diz
Enable the Use Apache mod_rewrite/URL rewriting option and Save: This
option uses the Apache mod_rewrite function to eliminate the
"index.php" portion of the URL.
.....
If this option causes errors, please see How to check if mod rewrite
is enabled on your server. If it is not enabled and you have access to
the file apache/conf/httpd.conf, open that file and check if the line
LoadModule rewrite_module modules/mod_rewrite.so is uncommented. If
necessary, uncomment the line and restart the Apache web server.
Não sei por que isso é adicionado em uma configuração Nginx, já que não há mod_rewrite no Nginx. O URL Rewriting no Joomla backend diz isso:
Use URL rewriting Select to use a server's rewrite engine to catch
URLs that meet specific conditions and rewrite them as directed.
Available for IIS 7 and Apache. Apache users only! Rename
htaccess.txt to .htaccess before activating. Rename web.config.txt to
web.config and install IIS URL Rewrite Module before activating.
Não diz nada sobre o Nginx, mas ainda funciona. Eu estou coçando minha cabeça aqui. Alguém pode me dizer como index.php do Joomla é removido tão facilmente no Nginx? Esta é a minha configuração Niganx Vhost:
server {
listen 80;
server_name example.com;
root /var/www/example/public_html;
index index.php index.html index.htm default.html default.htm;
access_log /var/log/nginx/accn_access.log;
error_log /var/log/nginx/accn_error.log;
##
# JOOMLA SEF
##
location / {
try_files $uri $uri/ /index.php?q=$request_uri;
}
##
# PHP scripts to FastCGI
##
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Veja .. é uma configuração bastante direta. Onde está a mágica acontecendo?