【问题标题】:Clean URL's not working, mod_rewrite module installed清理 URL 不起作用,安装了 mod_rewrite 模块
【发布时间】:2010-09-25 06:44:17
【问题描述】:

我刚刚安装了 Drupal 6.19 的新副本以加快编写模块的速度。但由于某种原因,重写模块不适用于 Drupal。

我检查的内容:

  • $ apachectl -M >> 安装好了
  • php_info() 在当前服务器上 >> 说 rewrite 也安装了
  • 我还在我的 Drupal 根文件夹中 double-checked .htaccess 文件
  • 更新:检查 httpd.conf 中的AllowOverride All

我在这里没有选择。到处找,但 Drupal 设置不允许我启用设置,他们的测试只是访问一个如果重写模块在那里应该可以工作的站点。

我的规格: Mac OS X 10.6 雪豹 使用 PHP5 的内置 Apache

谢谢!

【问题讨论】:

  • 如果您还没有尝试过,您需要从 drupal 管理面板启用 Clean urls。 IE。管理->清理网址。
  • 这是我做不到的。

标签: apache drupal mod-rewrite drupal-6


【解决方案1】:

最后但同样重要的是,您必须授权您的虚拟主机或目录使用.htaccess

AllowOverride All

更新:

我无法弄清楚您的确切问题,但始终值得测试 Apache 实际上正在解析您的 .htaccess 文件。故意犯语法错误,看看是否收到500 Internal Server Error 消息。此外,使用不涉及 Drupal 的简单重定向规则测试 mod_rewrite

【讨论】:

  • 是的,这是你没有提到的大事。此行需要放在您的 httpd.conf 文件中的某个位置。
  • +1 因为它肯定会帮助某人。由于某种原因,我仍然无法解决它。我在我的 httpd.conf 文件中进行了更改(我知道我正在编辑正确的文件),然后我重新启动了 apache 服务器。它没有帮助:(
【解决方案2】:

还有两件事要检查:

  1. 验证您的 .htaccess 对您的 apache 进程是否可读(是的,我读到您仔细检查了它,但其中是否包括文件权限?)
  2. Enable rewrite logging - 这可能会给你一些失败的提示。从log level 5 开始,然后根据需要增加/减少。 (别忘了稍后再关闭它,因为它是一个巨大的性能猪;)

另外,我会尝试简化测试场景 - 从 vhost 配置中的简单重写指令开始。一旦成功,将其移至 vhosts 文档根目录顶层的 .htaccess,然后移至子目录(如果需要/使用)。

【讨论】:

  • 谢谢,由于某种原因更改文件权限有效。一开始是:644 (-rw-r--r--@) 我使用命令 chmod 777 更改了它,它给了我 (-rwxrwxrwx@)。然后我重新启动了 Apache 并且它工作了 :) ...奇怪的是,当我把它转回 644 时它仍然工作。知道为什么吗?
  • @WmasterJ:这确实很奇怪,我也不知道为什么。除非权限设置真的很奇怪(我对此表示怀疑),否则最明显的原因是您更改了其他解决问题的方法,但只需要重启 apache 即可生效!?
  • 可能是这样的:
【解决方案3】:

确保如果安装位于用户名是 rewriteBase 的一部分的子目录中

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
RewriteBase /~username/drupal**

【讨论】:

    【解决方案4】:

    如果您在子文件夹中运行 Drupal 安装,例如:example.com/drupal,然后在 .htaccess 文件中启用“RewriteBase /”,它可能会对您有所帮助。

    【讨论】:

    • 试过了,好像没用。
    • 这个问题你解决了吗? apache 可能不会读取 .htaccess 文件。尝试在 .htaccess 中插入一些虚拟文本内容并尝试加载您的页面。如果您在屏幕上出现错误,那么它与 apache / php 配置有关。但如果你没有收到任何错误,那么就是 apache config (sites-enabled) 问题。
    【解决方案5】:

    干净的 url 可以是 www.example.com/fisherman 而不是 www.example.com/data/pages/fisherman.php

    某些安装的 apache 具有开箱即用的干净 URL 功能。需要正确配置 2 个步骤才能使其正常工作。

    Enable rewrite module
    Allow .htaccess file overrides
    

    这两个步骤都需要对您的服务器进行 SSH root 访问。因此,如果您在共享主机上,这可能对您不起作用。打开你的终端:

    1. 启用重写模块

    要启用重写模块,可以键入以下命令

    sudo a2enmod rewrite
    

    现在输入

    sudo service apache2 restart
    

    启用更改。您可以通过键入来检查它是否正常工作

    sudo apache2ctl –M
    

    将出现一个列表。寻找“rewrite_module”。

    http://codeontrack.com/enable-clean-urls-apache/

    【讨论】:

      【解决方案6】:

      在你的 httpd.conf 文件中寻找这一行

      #LoadModule rewrite_module modules/mod_rewrite.so
      

      如果评论 只需取消注释它重新启动 apache 服务器,然后尝试在 drupal 管理 Clean URL Section 中启用

      【讨论】:

      • 谢谢。但是,如果您阅读我的问题,您会看到我检查了 apachectl -M(显示所有活动模块)和 php_info(),它也显示了当前活动的模块。
      【解决方案7】:

      我在我的 .htaccess 文件中添加了以下内容,它得到了解决。我的问题特别是与 Rackspace / CentOS 映像有关

      选项 - 多视图

      【讨论】:

        【解决方案8】:

        正如 Álvaro G. Vicario 所提到的,首先要做的是在 .htaccess 文件的顶部添加类似 ghfdiddfdjf 的内容,这应该会引发内部错误。如果没有,您就知道.htaccess 文件没有被读取。我的不是,我找到了以下修复:

        etc/apache2/sites-enabled 文件夹中,有一个名为default-000 的文件。正是在这个文件中,我在文件的 2 个位置更改了AllowOverride All

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-19
          • 1970-01-01
          • 1970-01-01
          • 2021-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多