2011-10-29 9 views
8

J'ai un projet de site web sur mon mac livre pro léopard, et j'utilise construit en apache2 et php. J'ai fait mes configurations dans httpd.conf et user.conf pour utiliser htaccess. Les changements effectués comme:.htaccess rewriterule ne fonctionne pas correctement sur mac

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

<Directory > 
    AllowOverride All 
</Directory> 

Le problème est quand je veux ouvrir un site comme localhost/~ nom d'utilisateur/site/site/index.php/bienvenue, index.php fait quelques opérations et trouve le contrôleur droit et la bonne page.

Mais lorsque je tente d'entrer dans le site comme site/apache accueil me donne l'erreur suivante:

Introuvable

Les utilisateurs d'URL demandé/nom d'utilisateur/Sites/site/index.php/accueil n'a pas été trouvé sur ce serveur. Le problème est que apache l'obtient comme s'il s'agissait bien d'un fichier et la déclaration d'erreur le lui donne dans un système de fichiers, mais cette requête doit être récupérée à index.php à la place.

mon fichier .htaccess ressemble à ceci

<ifModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L] 
</ifModule> 

Ce qui me dérange que cette configuration fonctionne aussi bien sur Linux et Windows, mais ne fonctionne pas sur Mac. Je me sens échouerai:)

+0

Pouvez-vous confirmer le module de réécriture a été activé correctement? – Phil

+0

oui je peux les voir dans la section des modules chargés de phpinfo(); – LostMohican

+0

Envisageriez-vous de changer votre réponse? Celui que vous avez accepté est en fait incorrect. La réponse de @tong est correcte. – spikyjt

Répondre

15

j'ai rencontré le même problème! 'DocumentRoot' ne fonctionne pas pour moi dans Lion.

Mais cela fonctionne:

RewriteEngine On 

RewriteBase /~username/YOURPath 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L] 
+1

Fantastique! J'ai passé trois heures à essayer de comprendre cela. Merci! –

+1

J'ai fait face au même problème mais il est temps d'économiser mon temps donc +1 – imsyedahmed

+2

Cela devrait être la réponse acceptée car c'est correct - RewriteBase devrait toujours être réglé. Modifier DocumentRoot est un hack (et ne serait pas possible à partir de .htaccess sur un serveur bien configuré). – spikyjt

4

Vous devez ajouter la ligne suivante à votre fichier .htaccess:

DocumentRoot "/~username/site/" 
5

Sur Mac OS X Mountain Lion, assurez-vous AllowOverride est réglé sur All sur Répertoire/

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
    Order deny,allow 
    Deny from all 
</Directory> 

et le répertoire racine de votre document chemin racine:

<Directory "/Library/WebServer/Documents"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

également faire en sorte que FollowSymLinks est inclus dans Options.

si votre « URL-index.php moins jolie » est pas sur votre DocumentRoot puis ajoutez le répertoire RewriteBase suivant sur votre fichier .htaccess où votre index.php existe, comme dans l'exemple suivant:

RewriteBase /~username/site/site/ 

Si vous souhaitez modifier le nom du fichier .htaccess à quelque chose d'autre comme .acl ou htaccess.txt, supprimez la ligne suivante sur votre httpd.conf

# Various default settings 
Include /private/etc/apache2/extra/httpd-default.conf 

et changer .htaccess à 0.123.directive à tout ce que vous aimez dans extra/httpd-default.conf fichier.Par exemple, si vous souhaitez modifier le fichier .htaccess à htaccess.txt changement à:

AccessFileName htaccess.txt 

les sauver, redémarrez votre serveur web apache sur Mac OS X Mountain Lion, et nous espérons que vous êtes bon d'aller. J'espère que cela aide.

2

Je viens d'avoir le même problème, mais les solutions ci-dessus ne fonctionne pas pour moi,

Retrait de la barre oblique depuis le début a fait l'affaire (je suppose que parce que mon navigateur fonctionne déjà sous l'utilisateur correct).

Alors RewriteRule^Inscrivez-/register.php

Est devenu RewriteRule^Register

Cela m'a conduit les noix! BTW Je cours xampp (apache 2) sur Mac OS 10.8.

0

Si je place un .htaccess dans/Bibliothèque/WebServer/Documents et ouvre "localhost /"; pour le tester, cela fonctionne comme prévu. Cela ne fonctionne pas dans "~/Sites".

1

J'ai eu le même problème mais pour moi le problème était que mod_rewrite n'était pas activé.

je dû utiliser ceux-ci deux lignes dans le fichier /etc/apache2/httpd.conf:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so 
LoadModule php7_module  libexec/apache2/libphp7.so 

Après qu'il n'y avait pas besoin d'utiliser RewriteBase etc.

Questions connexes