2010-09-25 125 views
3

我刚刚安装了Drupal 6.19的全新副本,以加速如何编写模块。但由于某些原因,重写模块不适用于Drupal。Clean URL无效,安装了mod_rewrite模块

我已经检查:

  • $ apachectl -M >>它安装
  • php_info()当前服务器>> ON 说重写也安装
  • 我也double-checked.htaccess文件我的Drupal根文件夹
  • 更新:检查httpd.conf中的AllowOverride All

我在这里走了选项。无处不在,但Drupal设置不让我启用设置,他们的测试只是访问一个应该在重写模块存在的情况下工作的站点。

我的规格: 的Mac OS X 10.6 Snow Leopard的 使用内置Apache与PHP5

谢谢!

+0

如果你还没有试过,你需要从drupal管理面板启用Clean urls。即。管理 - >清理网址。 – noobcode 2010-09-25 06:52:55

+0

这是我不能做的。 – JeroenEijkhof 2010-09-25 06:57:28

回答

3

两件事来检查:

  1. 确认您的.htaccess是可读你的Apache进程(是的,我读了你双重检查,但这样做的CLUDE文件的权限)
  2. Enable rewrite logging - 这可能给你在哪里失败的提示。从5的log level开始并根据需要增加/减少。 (不要忘记稍后关闭它,因为它是一个巨大的性能猪;)

另外,我会尽量简化测试场景 - 在vhost配置中开始一个简单的rewrite指令。一旦有效,将其移至一个。htaccess在vhosts文档根目录的顶层,然后到子目录(如果需要/使用)。

+0

谢谢你,更改文件权限的原因是有效的。开始的时候是:644('-rw-r -r - @')我使用命令'chmod 777'改变了它('-rwxrwxrwx @')。然后,我恢复了Apache,它工作:)奇怪的是,当我把它变回644它仍然工作。任何想法为什么? – JeroenEijkhof 2010-10-18 21:34:25

+0

@WmasterJ:这确实很奇怪,我不知道为什么。除非使用权限设置(我怀疑这是一个非常奇怪的故障),最明显的原因是你改变了一些修正你的问题的其他东西,但只需要重启apache即可生效!? – 2010-10-19 20:15:31

+0

可能是这种情况:< – JeroenEijkhof 2010-10-20 01:52:33

7

最后但并非最不重要的,你必须授权您的虚拟主机或目录使用.htaccess

AllowOverride All 

更新:

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

+0

是的,这是你没有提到的大事情。这一行需要到你的httpd.conf文件的某个地方。 – 2010-09-25 14:49:25

+0

+1,因为它肯定会帮助某人。出于某种原因,我仍然无法解决它。我在httpd.conf文件中进行了更改(我知道我正在编辑正确的文件),然后重新启动了apache服务器。它没有帮助:( – JeroenEijkhof 2010-09-27 01:18:04

1

如果你运行像一个子文件夹Drupal安装:在你的.htaccess文件example.com/drupal,然后启用“RewriteBase /”,它可以帮助你。

+0

试过这个,它似乎没有帮助。 – JeroenEijkhof 2010-09-27 06:28:59

+0

你解决了这个问题吗?有可能,apache不读取.htaccess文件。尝试在.htaccess中插入一些伪文本的内容。尝试加载你的页面,如果你在屏幕上出现错误,那么它与apache/php配置有关的其他问题,但如果你没有错误,那么它是apache配置(网站启用)的问题 – Zydrunas 2010-10-04 06:14:29

0

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

#LoadModule rewrite_module modules/mod_rewrite.so 

如果评论 就取消它重新启动Apache服务器,然后尝试在Drupal辖清洁URL部分使

+0

谢谢。但是如果你阅读我的问题,你会看到我检查了'apachectl -M'(显示所有活动模块)以及php_info(),它也显示了当前活动的模块。 – JeroenEijkhof 2010-09-29 19:42:37

0

我将以下内容添加到我的.htaccess文件中,并且已解决。我的问题是专门与Rackspace公司/ CentOS的图像

选项-MultiViews hapening

2

确保如果安装在一个子目录,该用户名的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** 
0

由于阿尔瓦罗部分G. Vicario提到,首先要做的事情是在.htaccess文件的顶部添加类似ghfdiddfdjf这应该会引发内部错误。如果没有,则知道.htaccess文件未被读取。我没有,我发现以下修复:

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

1

一个干净的URL可以是像www.example.com/fisherman而不是www.example.com/data/pages/fisherman.php

一些Apache安装有干净的URL的功能开箱即用。有2个步骤需要正确配置才能工作。

Enable rewrite module 
Allow .htaccess file overrides 

这两个步骤都需要SSH根权限访问您的服务器。所以如果你在共享主机上,这可能不适合你。打开你的终端:

  1. 启用重写模块

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

sudo a2enmod rewrite 

现在键入

sudo service apache2 restart 

启用变化。您可以通过输入来检查它是否正常工作

sudo apache2ctl –M 

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

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