[英]How to use mod_rewrite on OS X
我使用的是Mac OS X 10.6.8,并且mod_rewrite有问题-它可以正常工作。
我在/etc/apache2/users/my_user.conf
和/etc/apache2/httpd.conf
更改了AllowOverride All 。
.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]
与其将您的开发文件放在〜user / Sites中,不如将它们放在Web服务器根目录中,该根目录位于/ Library / WebServer / Documents中。 我为此感到幸运。
然后,确保/etc/apache2/httpd.conf中的AllowOverride All位于标记为<Directory "/Library/WebServer/Documents">
的目录标记内。 httpd.conf中有多个AllowOverride指令,如果使用我的方法,则要修改的指令大约在217ish行。
另外,请确保未对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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.