.htaccess重写程序在mac上无法正常工作

我有一个网站项目在我的MacBook Pro的豹,我使用内置的Apache2和PHP。 我已经在httpd.conf和user.conf中configuration了我的configuration来使用htaccess。 所做的更改

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so <Directory > AllowOverride All </Directory> 

问题是当我想打开一个像localhost /〜username / site / site / index.php / welcome这样的网站时,index.php会执行一些操作并find正确的控制器和正确的页面。

但是当我尝试进入网站/欢迎apache给我以下错误:

未find

在此服务器上未find请求的URL用户/用户名/站点/站点/ index.php / welcome。

问题是apache得到这个样子确实是一个文件,错误语句以文件系统的方式给出它,但是这个请求必须被提取到index.php。

我的.htaccess文件看起来像这样

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

令我困扰的是,这个configuration在Linux和Windows上都能正常工作,但在Mac上无法正常工作。 我感到注定了:)

我也遇到了同样的问题! 在Lion中,“DocumentRoot”不适合我。

但是这个工作:

 RewriteEngine On RewriteBase /~username/YOURPath RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L] 

在Mac OSX Mountain Lion上,确保AllowOverride设置为All on Directory /

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

和文档根路径的根目录:

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

还要确保FollowSymLinks包含在Options

如果你的“index.php-less漂亮的URL”不在你的DocumentRoot上,那么在你的index.php所在的.htaccess文件中添加下面的RewriteBase目录,如下例所示:

 RewriteBase /~username/site/site/ 

如果您想将.htaccess文件名更改为.aclhtaccess.txt等其他内容,请取消注释您的httpd.conf中的以下行

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

并在AccessFileName指令中将.htaccess更改为extra/httpd-default.conf文件中的任何内容。 例如,如果您想将.htaccess文件更改为htaccess.txt请将其更改为:

 AccessFileName htaccess.txt 

保存它们,在OSX Mountain Lion上重新启动你的apache web服务器,并且希望你很好。 希望这可以帮助。

您需要将以下行添加到.htaccess文件中:

 DocumentRoot "/~username/site/" 

我只是有同样的问题,但上面的解决方案不适合我,

诀窍删除斜杠(我猜是因为我的浏览器已经在正确的用户下运行)。

所以RewriteRule ^ Register /register.php

成为RewriteRule ^ Register register.php

这让我疯狂! 顺便说一句我在Mac OS 10.8上运行xampp(apache 2)。

如果我将.htaccess放入/ Library / Webserver / Documents并打开“localhost /”; 测试它,这个按预期工作。 它只是在“〜/站点”不起作用。