aiuto htaccess, la rimozione di una stringa dall'URL
-
29-09-2019 - |
Domanda
Mi chiedo, è possibile rimuovere index.php da un URL? In sostanza su alcune pagine di un sito ho questa struttura,
http://www.domain.com/index.php/members/register , ma altre pagine devo strutture URL come questo, http: //www.domain .com / categoria / prodotti / id / 5 , voglio sapere è possibile con .htaccess per rimuovere l'index.php ed eventuali barre attribuiti in caso di necessità? Come potrei fare per fare questo?
Soluzione
Sì, è possibile. Con questa regola ogni /index.php
richiesta verrà rimosso:
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php[/?\ ]
RewriteRule ^index\.php(/(.*))?$ /$2 [L,R=301]
Ma si dovrebbe utilizzare meglio gli URL corretto fin dall'inizio in modo che l'applicazione sta scontando documenti il ??cui link non contengono il /index.php
.
Altri suggerimenti
Se si vuole a livello globale riscrittura index.php / regolatore / azione
Questa configurazione .htaccess dovrebbe fare il trucco:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Questa controlli di configurazione di Apache su se esiste la directory / file su disco o meno (vale a dire la richiesta corrisponde a una vera e propria risorsa su disco), e riscrivere la richiesta di il controller anteriore, se necessario.
Quindi http://www.domain.com/resources/image.png
dovrebbe restituire la risorsa immagine.
E http://www.domain.com/user/show/5
dovrebbe trasparente riscrivere a http://www.domain.com/index.php/user/show/5
Con questa configurazione, è possibile rimuovere tutti i riferimenti index.php negli URL applicazione e lasciare la riscrittura al server web.