Abilita riscrittura URL (mod_rewrite) utilizzando i file .htaccess in ~ / Sites su Lion

13

Non riesco a ottenere mod_rewrite per lavorare su Lion. Sto sviluppando un numero di siti Web localmente, in ~ / Sites, usando i file .htaccess. Sono su 10.7.3 e non ho toccato alcun file di configurazione tranne per abilitare PHP in httpd.conf (che funziona).

So che ci sono almeno 2 domande a riguardo, ma le soluzioni dettagliate non funzionano. Né le altre soluzioni che ho trovato sul web. Devo fare qualcosa di stupido o trascurare qualcosa, altrimenti sto diventando pazzo, ma non funziona.

Ho provato tutte le solite cose:

  1. In /private/etc/apache2/users/<myusername>.conf , modifica AllowOverride None in AllowOverride All e riavvia il server web

  2. Inoltre, in /private/etc/apache2/httpd.conf , modifica qualsiasi / tutte le occorrenze di AllowOverride None in AllowOverride All - L'ho provato in tutte le varie posizioni in cui sono state trovate queste direttive

  3. Prova sostanzialmente tutte le possibili combinazioni di valori per la riga Options sopra / sotto la riga AllowOverride , inclusi i valori: Indexes MultiViews FollowSymLinks All

Ovviamente riavviare sempre il server Web dopo un tale cambiamento. Nessuno di questi funziona. Tutti i miei url puliti semplicemente non funzionano; Ottengo un 404 - non trovato. Il registro degli errori di Apache mi dà solo errori "File inesistenti:". Quindi sembra che il modulo mod_rewrite non stia nemmeno funzionando affatto.

Mi sono assicurato che mod_rewrite sia caricato in httpd.conf, che è; è così di default su un'installazione Lion.

La cosa pazzesca è che tutto ha funzionato perfettamente - fino a quando non sono passato a una nuova macchina con Lion. Cioè, sto escludendo un errore nei miei file .htaccess perché so che ha funzionato prima. Inoltre, se si trattasse di un errore nel file .htaccess, riceverei una sorta di messaggio di errore dal modulo mod_rewrite nel file error_log di Apache, almeno dicendomi che il modulo stesso viene chiamato. Ma questo non sta succedendo.

Sto trascurando qualcosa? Devo cambiare le impostazioni di configurazione da qualche altra parte? Devo cambiare la configurazione di PHP? Perché sono le istruzioni (come Come attivare mod_rewrite su MacOSX Lion e ottenere mod_rewrite per funzionare su Mac OS X ) lavorando per altre persone ma non per me? :)

Ho già perso ore su questo. Qualsiasi aiuto sarebbe MOLTO apprezzato.

    
posta Niels Heidenreich 03.04.2012 - 22:05
fonte

5 risposte

12

Assicurati che nel tuo /etc/apache2/users/username.conf tu abbia quanto segue:

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews FollowSymlinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

I FollowSymlinks e AllowOverride sono essenziali qui. Mentre stai suggerendo entrambi nella tua domanda, forse non li hai configurati correttamente in tandem.

Assicurati che anche in httpd.conf /private/etc/apache2/extra/httpd-userdir.conf sia incluso. È di default.

Dopo eventuali modifiche, riavvia il server web affinché le modifiche abbiano effetto.

Se hai ancora problemi, forse c'è un problema con le tue regole di riscrittura reali. Li stavi già usando in un contesto .htaccess? Nota che in un .htaccess, la regex della regola di riscrittura viene confrontata con un URI di richiesta senza la barra iniziale e sempre relativo alla directory in cui risiede il file .htaccess , mentre in un httpd.conf globale l'URI deve corrisponde a una barra iniziale ed è relativo alla radice Web. Poiché presumibilmente hai il tuo .htaccess in una sottodirectory di ~ / Sites, le tue regole di riscrittura potrebbero comportarsi in modo diverso da quando il file .htaccess risiede nella web root di un host (virtuale).

Per eseguire il debug di mod_rewrite è possibile abilitare la registrazione di riscrittura. Dovresti abilitarlo in /etc/apache2/httpd.conf:

RewriteLogLevel 3
RewriteLog /path/to/rewrite.log
    
risposta data 03.04.2012 - 22:30
fonte
1

L'aggiunta di Opzioni + FollowSymLinks ha funzionato bene per me

Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteRule
    
risposta data 20.08.2013 - 15:30
fonte
1

Ho riscontrato un problema simile in cui il mio file .htaccess veniva completamente ignorato mentre si trovava in una sottocartella all'interno della mia directory ~ / Sites in un VirtualHost configurato correttamente.

Dopo aver trascorso l'ultima ora a giocare con diversi file di configurazione e aver impostato AllowOverride All in vari punti, ho finalmente scoperto che il file .htaccess, mentre sembrava un file .htaccess in Finder, era in realtà un .htaccess.txt file con l'estensione nascosta.

Per controllare e modificare il file .htaccess, fai clic con il tasto destro su di esso e scegli Ottieni informazioni, quindi assicurati di rimuovere qualsiasi estensione principale dalla fine, come quella che avevo:

E ora funziona!

    
risposta data 25.11.2014 - 17:59
fonte
0

Inserire .htaccess in / Library / WebServer / Documents e aprire "localhost /"; per testarlo, funziona come previsto. Semplicemente non funziona in "~ / Sites". Grazie Niels Heidenreich per questo!

    
risposta data 02.04.2014 - 13:29
fonte
-1

Quando scrivi: / Users / nomeutente / app_name

Il / si riferisce alla radice del server web:

"localhost /"

Se usi / ~ username / nome_app in riscrittura dovrebbe funzionare.

    
risposta data 31.01.2013 - 03:15
fonte

Leggi altre domande sui tag