【问题标题】:How to correctly activate mod_rewrite mamp?如何正确激活 mod_rewrite mamp?
【发布时间】:2016-07-16 00:49:43
【问题描述】:

本地wordpress网站主页运行良好但mod_rewrite不起作用。所以,主页可以正常工作,但只要我点击任何链接,我就会得到Not Found

此错误的日志输出:

[error] [client 127.0.0.1] File does not exist: /Applications/MAMP/htdocs/myweb/my-web-page-that-has-to-work, referer: http://myweb.dev/

根据我的理解,该错误意味着它会查找该特定页面,而不是使用mod_rewrite 以便从数据库中获取页面。

httpd.conf相关内容:

# Virtual hosts, uncommented include
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

...

# AllowOverride All is here
<Directory "/Applications/MAMP/htdocs">
Options All
AllowOverride All
Order allow,deny
Allow from all
XSendFilePath "/Applications/MAMP/htdocs"
</Directory>

httpd-vhosts.conf相关内容:

<VirtualHost *:80>
DocumentRoot /Applications/MAMP/htdocs
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/myweb"
ServerName myweb.dev
ServerAlias www.myweb.dev
ErrorLog "/private/var/log/apache2/myweb-error_log"
CustomLog "/private/var/log/apache2/myweb-access_log" common
</VirtualHost>

关于如何让它工作的任何线索?

【问题讨论】:

    标签: php wordpress apache mod-rewrite mamp


    【解决方案1】:
    1. 首先确保 MAMP Apache 加载模块。默认情况下,MAMP 已激活此功能。
    2. 我为 Joomla 制作了这个。 Wordpress 应该是类似的。 Mac 不允许您在根目录 (htdocs/yourwebsite/) 中重命名 htaccess.txt
    3. 不要使用显示隐藏文件的插件 - 最简单的方法是打开 Filezilla 并在那里重命名本地文件。您使用通常的 wordpress htaccess 并将其重命名为 .htaccess
    4. 在 wordpress-backend 中像往常一样激活重写。

    【讨论】:

      【解决方案2】:

      首先确保 Apache 加载模块。见:How to enable mod_rewrite for Apache 2.2

      然后将其添加到文件夹内的 .htaccess 文件中

      <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
      </IfModule>
      

      或者像这样将它添加到您的 httpd-vhosts.conf 中。 更正:

      <VirtualHost *:80>
        DocumentRoot "/Applications/MAMP/htdocs/myweb"
        ServerName myweb.dev
        ServerAlias www.myweb.dev
        ErrorLog "/private/var/log/apache2/myweb-error_log"
        CustomLog "/private/var/log/apache2/myweb-access_log" common
      
      
        <Directory "/Applications/MAMP/htdocs/myweb">
              AllowOverride All
              Allow from all  
      
              <IfModule mod_rewrite.c>
                 RewriteEngine On
                 RewriteBase /
              </IfModule>
      
        </Directory>
      
      </VirtualHost>
      

      现在为 WP 添加你的重写规则,看看它是否有效。

      您可以检查 Apache 是否在您的文件夹中使用 PHP 脚本加载模块。试试这个,然后从那里继续。

      <?php
      
      if (in_array('mod_rewrite', apache_get_modules())) {
          echo "Yes, Apache supports mod_rewrite.";
      }
      
      else {
          echo "Apache is not loading mod_rewrite.";
      }
      

      【讨论】:

      • 谢谢,但我使用的是用于 osx 的 MAMP,并且没有 a2enmod 这样的东西。我也尝试将IfModule 放在那里,但是 Apache 服务器无法启动。
      • 您是否尝试将 RewriteEngine OnAllowOverride All 添加到您的虚拟主机中。
      • 服务器无法启动。仅当我删除线时才有效
      • 删除 标签。这也是你add the module in MAMP的方式。
      • 我做了,服务器启动了但没有变化,仍然没有找到。
      猜你喜欢
      • 2012-01-27
      • 2023-03-08
      • 2011-02-06
      • 2022-09-23
      • 1970-01-01
      • 2018-12-05
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多