AddModule mod_rewrite.c non funzionante per rewrite

  • Creatore Discussione Creatore Discussione PHP
  • Data di inizio Data di inizio

PHP

Utente Attivo
9 Mag 2013
105
0
16
Ho configurato con successo il file .htaccess per il rewrite e redirect delle pagine web, tuttavia spegnendo e poi riaccendendo il computer mi sono ritrovato con il un problema sulla connessione: adesso apache non si connette più.
Dopo aver pensato alle possibili soluzioni ho torvato l'ipotetico problema:
Codice:
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Se metto davanti ad AddModule un # per ignorarlo funziona e il server si connette di nuovo.
Il problema è che quel AddModule serve per far funzionare tutto il rewrite. Il tutto si è verificato spegnendo e riaccendendo il computer, ho già provato a disinstallare e reinstallare apache ma continua con lo stesso problema.
Visto che tutto funzionava correttamente e il problema lo causa solo questo deduco che non sia un problema di .htaccess .
Quale errore posso aver commesso?
 
Sono riuscito a far funzionare tutto.
Adesso mi rimane solo un piccolo problema di logica.
Scrivendo così:
Codice:
RewriteRule ^categoria/prodotto$  http://localhost/cartella/prodotti.php [L,NC,NS]
Riesco a validare il link: sito/categoria/prodotto.
Adesso se aggiungo dopo questo:
Codice:
RewriteRule ^cartella/prodotti.php$ categoria/prodotto [L,R=301]
Provoco un redirect digitando sito.it/cartella/prodotti.php verso sito.it/categoria/prodotto(senza mettere anche questa regola è possibile digitare e arrivare alla pagina cartella/prodotti.php senza modifica dell'url).
Almeno in teoria scrivendo queste due regole dovrei fare in modo di vedere sempre categoria/prodotto come link finale, in tutti i modi in cui si tenta di scrivere la pagina, invece ottendo un redirect sul secondo di questo tipo:
"localhost/C:/....", in pratica al posto di prendere solo l'indirizzo, prende la base localhost e poi riscrive tutto l'indirizzo partendo da C:..
Perchè ottengo questo comportamento anomalo?

P.S. Devo usare per forza questi rewriterules perchè in realtà i prodotti si nascondono dietro il primo ?prodotto=prodotto, per questo avrei la necessità di questi rewrite rules.
 
Ho capito il problema. teoricamente non posso puntare a pagine che esistono:
Codice:
RewriteRule ^categoria/prodotto$  http://localhost/cartella/prodotti.php [L,NC,NS]
RewriteRule ^cartella/prodotti.php$ categoria/prodotto [L,R=301] ->questo non funziona
RewriteRule ^cartella/prodottiiii.php$ categoria/prodotto [L,R=301] ->questo funziona ma è sbagliato

Il secondo non funziona, il terzo si.
Credo che il problema sia che prodotti.php esiste realmente, mentre prodottiiii.php è inventato.
Quindi non posso usare un RewriteRule su link reali? Esiste un modo per risolvere il problema?
 
Nessuno conosce una soluzione?
Aggiorno, dicendo che il problema è semplicemente che non posso mettere un rewrite per una pagina già passata sotto rewrite, esempio:
Codice:
#entrambi i rewrite presi singolarmente funzionano
RewriteRule ^categoria/prodotto$  http://localhost/cartella/prodotti.php [L,NC,NS]
#il secondo in questo caso causa un loop (come segnalato da chrome)
RewriteRule ^categoria/prodotti.php$  http://localhost/cartella/prodotto [L,NC,NS]
#deduco che non posso scriverlo così non perchè sia impossibile, ma perchè genero un loop, e quindi verifico all'infinito la stessa condizione
Quello che vi chiedo è semplice. Mi serve una RewriteCond che mi fermi il loop. In particolare se ha già avuto effetto la prima regola di rewrite deve ignorare la seconda anche se vera.
Non sono esperto di file .htaccess e non sò come strutturarla. Avete un'idea?
 

Discussioni simili