我正在尝试让
.htaccess
在 MAMP 中工作。 .htaccess
的内容是一个简单的重定向行,但整个.htaccess文件似乎没有任何效果,即使我将其更改为包含无效数据也是如此。
我需要更改 MAMP 中的任何设置才能启用
.htaccess
文件吗?
在
httpd.conf
上的 /Applications/MAMP/conf/apache
中,找到:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
将
None
替换为 All
。重新启动 MAMP 服务器。
转到
httpd.conf
上的 /Applications/MAMP/conf/apache
并查看 LoadModule rewrite_module modules/mod_rewrite.so
行是否未注释(开头没有 #)
并改变这些 来自...
<VirtualHost *:80>
ServerName ...
DocumentRoot /....
</VirtualHost>
对此:
<VirtualHost *:80>
ServerAdmin ...
ServerName ...
DocumentRoot ...
<Directory ...>
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory ...>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
我正在使用 MAMP(今天下载),也遇到了这个问题。问题出在这个版本的 MAMP 堆栈的默认 httpd.conf 指令的第 370 行左右。查看 httpd.conf 的第 370 行左右,您会发现:
<Directory "/Applications/MAMP/bin/mamp">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
您需要更改:AllowOverride None 至:允许覆盖全部
如果您有 MAMP PRO,您可以设置像 mysite.local 这样的主机,然后从主窗口的“高级”面板中添加一些选项。只需打开“索引”和“多视图”选项即可。 “包含”和“FollowSymLinks”应该已经被选中。
我在重写时遇到的问题是 Codeigniter 等的一些 .htaccess 文件附带了
RewriteBase /
这似乎在 MAMP 中不起作用......至少对我来说。
我有 MAMP v 6.6.2(2022 年),我试图通过将“.htaccess”文件添加到我的网站根目录(“localhost/mywebsite”)在我的本地主机 Apache 上工作php 友好 URL /.htaccess"):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
这没有用。但我在真实域托管的 cPanel 上测试了它,并且运行良好。
所以我尝试用这些建议更改httpd.conf:
最后我给出了一个建议:
我只是注释掉了“.htaccess”(位于“localhost/mywebsite/.htaccess”)文件中的第二行代码,就是这样:
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
开始工作后,我恢复了 httpd.conf 文件中的所有更改,我已完成上述操作,并且它仍然有效。
我刚刚下载了 MAMP 并遇到了同样的问题。正在读取
.htaccess
文件(因为添加 AllowOverride All
时 Apache 返回 500),但重定向被忽略,因为 mod_rewrite
未加载。很容易修复:
/Applications/MAMP/conf/apache/httpd.conf
,找到包含 #LoadModule rewrite_module modules/mod_rewrite.so
的行(我安装的第 179 行),然后删除前导 #
。现在大多数 PHP 项目都使用 mod_rewrite,它应该默认启用。