Come faccio a far funzionare .htaccess nella directory corrente e non nelle sottodirectory?

StackOverflow https://stackoverflow.com/questions/1200348

  •  05-07-2019
  •  | 
  •  

Domanda

Sto usando mod rewrite per accedere indirettamente ai miei file PHP nella directory principale del mio sito web. Attualmente, ho qualcosa del genere,

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]

Ma quello che vorrei usare è

RewriteRule ^(.*)$ /$1.php [L]

In modo che non dovrei aggiornare il mio file .htaccess ogni volta che voglio aggiungere una nuova pagina al mio sito web. Il problema con questo, tuttavia, è che riguarda anche le mie sottodirectory. Il che rende inaccessibili CSS, javascript, immagini perché reindirizza a " /dir/example.png.php" ;.

Qual è la soluzione migliore qui?

È stato utile?

Soluzione

Prova questa regola:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]

Altri suggerimenti

Modifica il .htaccess in questo:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

Dopo aver avviato il motore di riscrittura, controllerà innanzitutto se il file richiesto è un file effettivo sul sistema o se è effettivamente una directory. Se non è nessuno di questi, eseguirà la regola, che in questo caso è quella di provare a trovare il file aggiungendo .php e pubblicandolo.

Sottodirectory, immagini, CSS e simili andranno bene perché usciranno dalla riscrittura una volta che sono stati trovati.

Lo farei con i filtri per ignorare le sottodirectory. In questo modo devi solo cambiarlo se aggiungi una sottocartella. Devi aggiungere una linea come Sosh se hai immagini o altri file nella cartella

Quanto segue ignorerebbe "immagini" e "js" sottocartelle e reindirizza tutto il resto

RewriteRule   ^images*   -  [L]
RewriteRule   ^js*       -  [L]
RewriteRule   ^(.*)$     /$1.php   [L]

Qualcosa del genere (notare il!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top