Visualizzazione dei risultati da 1 a 6 su 6

Discussione: RewriteEngine

  1. #1

    RewriteEngine

    salve a tutti... so ke probabilmente nn ne potete piu di domande sul RewriteEngine di apache...
    ma nn so dove sbattere la testa...



    ecco il mio problema:

    vorrei ke TUTTE le rikieste al sito vengano rendirizzate ad un file specifico,
    questo deve includere anke tutte le kiamate alle sottocartelle del sito...

    con alcune eccezioni...
    /immagini/
    /js/

    esempio:

    www.miosito.it --> boot.php
    www.miosito.it/pag1.php --> boot.php
    www.miosito.it/cartella/pag1.php --> boot.php
    www.miosito.it/cartella2/pag1.php --> boot.php
    www.miosito.it/immagini/imm.jpg --> miacartella/imm.jpg

    questo e' il codice in .htacces:


    Codice PHP:

    RewriteRule 
    ^immagini/(.*)$  applications/test_app/views/immagini/$[L]
    RewriteRule ^js/(.*)$           applications/test_app/views/jscript/$[L]
    RewriteRule ^(.*)$ boot.php [L,QSA
    tutto andrebbe bene se nn fosse per il fatto ke apache dopo aver applicato le regole esegue una redirect interna ( l'ho scoperto dalla documentazione ufficiale) e gestisce il tutto come fosse una nuova rikiesta... indi per cui RIESEGUE il file .htaccess con l'URL modificato
    applicando nuovamente le regole e ovviamente mandando tutto a ........

    come posso evitare la riesecuzione delle regole?? c'e' qualke RewriteCondition ke mi puo aiutare???

  2. #2
    Ciò è vero: devo ancora scoprire perché quel rotto in di mod_rewrite riesegue la sottoquery anche se tu ci metti [L] duecento volte. Nel tuo caso comunque penso si possa risolvere mettendo:

    codice:
    RewriteRule ^boot.php  -  [L]
    prima di tutti gli altri. Aggiungo che la tua ultima condizione può essere ridotta a:

    codice:
    RewriteRule .* boot.php [L]
    [QSA] si usa se devi *aggiungere* qualcosa alla QUERY_STRING: se non lo specifichi la query string dovrebbe comunque venir passata intatta.

  3. #3
    purtroppo spostare la riga ke dici all'inizio nn aiuta..

    servirebbe una regola condizionale ke verifiki se la kiamata e' una redirect interna e nel caso faccia saltare i rewrite...

    ho dato un okkiata al file di log...
    eccone una riga...

    127.0.0.1 - - [23/Jan/2008:22:37:06 +0100] [localhost/sid#26c2b0][rid#f9b650/initial/redir#1] (3) [perdir C:/WebServer/www//] strip per-dir prefix: C:/WebServer/www/C/applications/test_app/views/css/css.css -> applications/test_app/views/css/css.css

    come si nota [rid#f9b650/initial/redir#1] indica ke si tratta di una redirect, nel caso contrario "/redir#1" nn c'e'... ma nn riesco a trovare un modo di sfruttare questa cosa...

  4. #4
    Originariamente inviato da _AnDrEa_1483
    purtroppo spostare la riga ke dici all'inizio nn aiuta..
    Frena, non ho detto di spostare: devi aggiungerne un'altra (non è la stessa cosa). Ti riporto l'esempio completo:

    codice:
    RewriteRule  boot\.php  -  [L]
    RewriteRule  ^immagini/(.*)$  applications/test_app/views/immagini/$1 [L]
    RewriteRule  ^js/(.*)$  applications/test_app/views/jscript/$1 [L]
    RewriteRule  .*  boot.php  [L]
    Così DEVE andare: utilizzo con profitto una variante col redirecting di questa roba.

  5. #5
    Originariamente inviato da ntd
    Frena, non ho detto di spostare: devi aggiungerne un'altra (non è la stessa cosa). Ti riporto l'esempio completo:

    codice:
    RewriteRule  boot\.php  -  [L]
    RewriteRule  ^immagini/(.*)$  applications/test_app/views/immagini/$1 [L]
    RewriteRule  ^js/(.*)$  applications/test_app/views/jscript/$1 [L]
    RewriteRule  .*  boot.php  [L]
    Così DEVE andare: utilizzo con profitto una variante col redirecting di questa roba.
    ho provato.. ma nn funziona... cmq nn capisco cosa dovrebbe fare la riga ke mi hai fatto aggiungere in testa...

    anche cosi tutte le rikieste finiscono in boot.php... mentre le richieste alla cartella immagini e js dovrebbero essere girate alle rispettive cartelle reali...

  6. #6
    Porongo, pensavo non ti chiamasse boot.php o ti eseguisse una sottoquery ricorsiva. La regola boot\.php - [L] voleva dire che quando l'URL contiene boot.php deve uscire senza fare niente. Sotto la riadatto in modo da uscire quando c'è applications/test_app/views nell'URL (adattala secondo le tue esigenze).

    codice:
    RewriteRule  applications/test_app/views  -  [L]
    RewriteRule  ^immagini/(.*)$  applications/test_app/views/immagini/$1 [L]
    RewriteRule  ^js/(.*)$  applications/test_app/views/jscript/$1 [L]
    RewriteRule  .*  boot.php  [L]
    Ciò evita che nelle sottoquery riapplichi il dannato boot.php.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.