我有一个网站项目在我的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
文件名更改为.acl
或htaccess.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 /”; 测试它,这个按预期工作。 它只是在“〜/站点”不起作用。