/ / Riscrivi gli URL internamente tra le cartelle, ad eccezione di index.php - apache, .htaccess, mod-rewrite

Riscrivi gli URL internamente tra le cartelle, ad eccezione di index.php - apache, .htaccess, mod-rewrite

Ho due cartelle:

/forum/admin
/forum/adminhide

Vorrei avere un file .htaccess nella cartella del forum che riscrivesse internamente tutto tranne index.php su / admin in / adminhide.

Esempio:

http://website.com/forum/admin/index.php -> don"t do anything
http://website.com/forum/admin/image.png -> internal rewrite to http://website.com/forum/adminhide/image.png

Tutti i miei tentativi finora hanno prodotto solo errori interni del server.

risposte:

1 per risposta № 1

Potrebbe funzionare (in un file .htaccess a livello di root):

RewriteRule ^forum/admin/index.php$ - [S=1]
RewriteRule ^forum/admin/(.*) forum/adminhide/$1

Eventuali URL corrispondenti alla prima regola non verranno riscritti (poiché la sostituzione ha il valore magico -), e il [S=1] flag fa sì che la regola successiva (che esegue la riscrittura effettiva) venga ignorata se la prima regola corrisponde.

Nota che questo interpreta le tue esigenze molto letteralmente: ogni Percorso URL che inizia con forum/admin/ viene riscritto, tranne per forum/admin/index.php. Puoi preferire cambiare la prima regola in qualcosa di un po 'più allentato, come:

RewriteRule ^forum/admin/(index.php(/.*)?)?$ - [S=1]

Questo corrisponderà anche (e quindi escluderà dalla riscrittura) i percorsi URL forum/admin/ e forum/admin/index.php/whatever.


Modificare: Se si desidera inserire il file .htaccess per questo in forum cartella, basta rimuovere l'iniziale forum/ dalle regole e dal set RewriteBase opportunamente invece:

RewriteBase /forum/

RewriteRule ^admin/index.php$ - [S=1]
RewriteRule ^admin/(.*) adminhide/$1