如何让MAMP读取.htaccess文件

问题描述 投票:0回答:7

我正在尝试让

.htaccess
在 MAMP 中工作。
.htaccess
的内容是一个简单的重定向行,但整个.htaccess文件似乎没有任何效果,即使我将其更改为包含无效数据也是如此。

我需要更改 MAMP 中的任何设置才能启用

.htaccess
文件吗?

.htaccess mamp
7个回答
104
投票
  1. httpd.conf
    上的
    /Applications/MAMP/conf/apache
    中,找到:

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride None
    </Directory>
    
  2. None
    替换为
    All

  3. 重新启动 MAMP 服务器。


41
投票

转到

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>

7
投票

我正在使用 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 至:允许覆盖全部


5
投票

如果您有 MAMP PRO,您可以设置像 mysite.local 这样的主机,然后从主窗口的“高级”面板中添加一些选项。只需打开“索引”和“多视图”选项即可。 “包含”和“FollowSymLinks”应该已经被选中。


5
投票

我在重写时遇到的问题是 Codeigniter 等的一些 .htaccess 文件附带了

RewriteBase /

这似乎在 MAMP 中不起作用......至少对我来说。


0
投票

我有 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:

  1. https://stackoverflow.com/a/21411933/3936149 - 没有帮助
  2. https://stackoverflow.com/a/7670598/3936149 - 没有帮助
  3. https://stackoverflow.com/a/19204983/3936149 - 没有帮助

最后我给出了一个建议:

我只是注释掉了“.htaccess”(位于“localhost/mywebsite/.htaccess”)文件中的第二行代码,就是这样:

RewriteEngine On   
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]  

开始工作后,我恢复了 httpd.conf 文件中的所有更改,我已完成上述操作,并且它仍然有效。


0
投票

我刚刚下载了 MAMP 并遇到了同样的问题。正在读取

.htaccess
文件(因为添加
AllowOverride All
时 Apache 返回 500),但重定向被忽略,因为
mod_rewrite
未加载。很容易修复:

  1. 打开
    /Applications/MAMP/conf/apache/httpd.conf
    ,找到包含
    #LoadModule rewrite_module modules/mod_rewrite.so
    的行(我安装的第 179 行),然后删除前导
    #
  2. 重新打开 MAMP,单击“停止”,然后单击“启动”以重新启动 Apache。

现在大多数 PHP 项目都使用 mod_rewrite,它应该默认启用。

© www.soinside.com 2019 - 2024. All rights reserved.