Impossibile caricare il modulo Apache mod_rewrite


2

Sto cercando di utilizzare il mod_rewritemodulo di Apache24 server, ma non riesco a caricarlo. So che ci sono state molte domande su questo argomento e le ho esaminate tutte, ma nulla sembra funzionare. Questi sono i passaggi che ho seguito fino ad ora ---

  1. Il httpd.conffile CHANGED ha apportato queste modifiche:
    a. Non commentato LoadModule rewrite_module modules/mod_rewrite.so
    b. Modificato AllowOverride NoneinAllowOverride All

  2. Server Apache riavviato

  3. Moduli caricati controllati utilizzando il comando prompt dei comandi httpd -M. Vedo che il modulo mod_rewrite è stato caricato. Ti allego l'immagine qui sotto.

La schermata del mio prompt dei comandi

Ma dopo aver eseguito tutti questi passaggi non riesco a vedere mod_rewrite come modulo caricato in phpinfo.

Schermata del file phpinfo

Come si può vedere nella figura sopra, non esiste un modulo caricato mod_rewrite. Anche come hack selvaggio ho anche provato a riscrivere gli URL usando il .htaccessfile ma questo non funziona. Apache sembra ignorare il .htaccessfile anche se ho inserito quel file nella mia directory principale.

 Note: I am running `PHP` as an apache module
 Using `WAMP` stack
 Using `localhost` as server

Ho bisogno di questo modulo per scopi di riscrittura degli URL. Ragazzi, potete suggerire un altro modo per caricare questo modulo?

MODIFICARE

Ho provato a riscrivere l'URL dall'host virtuale poiché la risposta suggerisce che il modulo è caricato e non dipende né da .htaccessné da info.php. Ma non sta reindirizzando. Sto aggiungendo l' Virtual hostimpostazione di seguito ---

<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks 
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">

    <IfModule rewrite_module>
            Options +FollowSymlinks
            RewriteEngine On
    </IfModule>

    <IfModule rewrite_module>
            RewriteRule   ^working.php   fun.html
    </IfModule>

</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule   ^working.php   fun.html
# end Rewrite Rules #################   
</VirtualHost>

Il codice sopra riportato non lo reindirizza a working.phpquando provo a eseguire fun.html. Dice semplicemente:

l'URL richiesto /working.php non è stato trovato su questo server.


mod_rewriteè un modulo Apache, PHP non ne saprà nulla e quindi non si presenta phpinfo(). I moduli PHP sono una cosa completamente separata.
Tero Kilkanen,

@Tero Kilkanen Sì, lo capisco, ma phpinfo mostra tutti gli altri moduli caricati nella 'sezione moduli caricati' solo mod_rewrite non viene visualizzato. Puoi spiegare perché succede? Puoi anche dirmi perché il mio modulo mod_rewrite non funziona anche se il comando apache 'httpd -M' mostra che è stato caricato. Grazie.
Neofita

phpinfo()mostra tutti i moduli PHP caricati. Quelle sono cose separate rispetto ai moduli Apache. Non so perché il modulo non funzioni.
Tero Kilkanen,

Hai provato a usare le direttive mod_rewrite direttamente nella tua configurazione del server (o VitualHost)? In un contesto per directory, anche FollowSymLinks(o SymLinksIfOwnerMatch) deve essere abilitato affinché mod_rewrite funzioni. per esempio. Options +FollowSymLinks.
Mr White,

"come hack selvaggio ho persino provato a riscrivere gli URL usando il file .htaccess ma questo non funziona." - un "hack selvaggio"? Definire "non funzionante". Se semplicemente non ha fatto nulla, è possibile che ci sia qualcosa di sbagliato nelle tue direttive che ha impedito una corrispondenza, piuttosto che mod_rewrite non è disponibile. (O i .htaccessfile non sono abilitati per questa directory?) Tuttavia, se viene visualizzato un errore (ad es. Un errore 500), è possibile che mod_rewrite non sia abilitato.
Mr White,

Risposte:


0
  1. Non hai bisogno di .htaccess o AllowOverride perché mod_rewrite funzioni, non utilizzarlo, poiché sei l'amministratore del tuo server, dal momento che complicherà la tua vita e causerà spese inutili al tuo server.
  2. A parte il caricamento del modulo, l'unica direttiva di cui hai bisogno è:

    RewriteEngine on

Extra:

  1. Prendi invece Redirect / RedirectMatch (da mod_alias) per reindirizzamenti semplici, se è tutto ciò di cui hai bisogno.
  2. Prendi in considerazione la definizione di reindirizzamenti / riscritture nel contesto di virtualhost per evitare incubi futuri e perdita di capelli nel prossimo futuro.

1

Dai tuoi screenshot collegati, il tuo Server Root (percorso del filesystem) sembrerebbe esserlo C:/Apache24, ma non fai riferimento a C:nessuna delle direttive di configurazione del tuo server? È necessario fare riferimento al percorso completo del filesystem, ad esempio:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

Questa direttiva, utilizzata direttamente in VirtualHost (all'esterno di un <Directory>contenitore), non corrisponderà mai. Se utilizzato in un contesto VirtualHost (o server config), mod_rewrite corrisponde al percorso URL completo, che include in particolare il prefisso barra. Questa è una differenza importante rispetto all'uso di mod_rewrite come directory / .htaccesscontesto (quando il prefisso barra è escluso).


L'ho provato ma ancora non funziona.
Neofita
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.