2012-09-25 33 views
0

我使用的是mac os x 10.6.8,并且mod_rewrite有问题 - 它可以工作。如何在OS X上使用mod_rewrite

I changed AllowOverride All in /etc/apache2/users/my_user.conf and /etc/apache2/httpd.conf

的.htaccess代码:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

PHP:

var_dump($_GET['q']); 

结果:

Trying: http://localhost/~nonamez123/konkurs/asgfsddsh 

Not Found 

The requested URL /Users/nonamez123/Sites/konkurs/index.php was not found on this server. 

,你可以看到,改写上index.php回事,但index.php不能找到

日志:

127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (3) [perdir 
/Users/nonamez123/Sites/konkurs/] strip per-dir prefix: 
/Users/nonamez123/Sites/konkurs/asfdasdf - asfdasdf 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (3) [perdir 
/Users/nonamez123/Sites/konkurs/] applying pattern '^(.*)$' to uri 
'asfdasdf' 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (4) [perdir 
/Users/nonamez123/Sites/konkurs/] RewriteCond: 
input='/Users/nonamez123/Sites/konkurs/asfdasdf' pattern='!-f' => 
matched 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (4) [perdir 
/Users/nonamez123/Sites/konkurs/] RewriteCond: 
input='/Users/nonamez123/Sites/konkurs/asfdasdf' pattern='!-d' => 
matched 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (2) [perdir 
/Users/nonamez123/Sites/konkurs/] rewrite 'asfdasdf' -> 
'index.php?q=asfdasdf' 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (3) split 
uri=index.php?q=asfdasdf - uri=index.php, args=q=asfdasdf 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (3) [perdir 
/Users/nonamez123/Sites/konkurs/] add per-dir prefix: index.php -> 
/Users/nonamez123/Sites/konkurs/index.php 
127.0.0.1 - - [25/Sep/2012:21:06:13 +0300] [localhost/sid#10080d720][rid#1009d64a8/initial] (1) [perdir 
/Users/nonamez123/Sites/konkurs/] internal redirect with 
/Users/nonamez123/Sites/konkurs/index.php [INTERNAL REDIRECT] 

回答

0

而不是把你的开发文件中的用户〜/网站,我会把他们在Web服务器的根,这是在/ Library/Web服务器/文件。我有更好的运气。

然后,确保您的/etc/apache2/httpd.conf中的AllowOverride All位于标记为<Directory "/Library/WebServer/Documents">的目录标记内。在httpd.conf中有几个AllowOverride指令,如果你使用我的方法,你想要修改的指令在217行左右。

还要确保线条LoadModule rewrite_module libexec/apache2/mod_rewrite.so未被注释。

最后确保你用sudo apachectl graceful重启apache。

如果你确实想使用你的用户网站目录,这个博客条目有一些提示。 http://johnattebury.com/blog/2012/07/upgrading-to-mountain-lion-forbidden-403-you-dont-have-permission-to-access-username-on-this-server/