干净的网址不适用于Drupal 7

时间:2011-07-17 20:04:49

标签: drupal-7 clean-urls

我刚刚安装并开始使用Drupal 7,我按照说明启用了Clean Urls。我点击了“运行清洁URL测试”按钮,但无法返回任何结果。它会加载某些内容然后刷新页面。

任何人都可以阐明为什么会发生这种情况以及我能做些什么吗?

7 个答案:

答案 0 :(得分:21)

有时以某种方式打开已清理的URL页面会失败并且不会显示错误(因为我从系统的角度来看没有错误)。尝试从以下位置手动更改网址:

www.mydomain.com/?q=admin/config/search/clean-urls

为:

www.mydomain.com/admin/config/search/clean-urls

看看它是否显示复选框,选择它并保存。

答案 1 :(得分:10)

创建文件phpinfo.php,内容:<?php phpinfo();?>然后通过浏览器加载它。找到文本'Loaded Modules',它应该包含'mod_rewrite'。如果不是,请在您的apache配置中启用它(您可能会问如果是这样)。

答案 2 :(得分:6)

您的apache配置文件(/etc/apache2/apache2.conf)必须包含以下2行。如果没有,那么添加它们。这告诉apache在文件夹.htaccess

中查找“/var/www/drupal”文件
<Directory /var/www/drupal>
  AllowOverride All
</Directory>
AccessFileName .htaccess

答案 3 :(得分:5)

我的drupal7安装在我的电脑上,Ubuntu 12.04,在usr / share / drupal7文件夹中。 我解决问题的方法是在drupal7文件夹中的.htaccess中进行以下更改:

#RewriteRule ^ index.php [L]
 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

并添加:

RewriteBase /drupal7

不要添加RewriteBase /drupal

现在测试还可以,一切正常。

答案 4 :(得分:4)

你必须在apache中启用mod_rewrite才能使干净的URL工作

如果mod_rewrite不在phpinfo中,则必须通过

安装
sudo a2enmod rewrite

sudo apache2ctl -l

You need to replace the occurrence of AllowOverride none to AllowOverride all

并像这样改变

<VirtualHost *:80>
ServerAdmin admin@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>

并重启apache

sudo service apache2 restart

答案 5 :(得分:2)

GoDaddy 上重新安装 Drupal 7.15 后,我遇到了问题。我必须对.htaccess进行以下更改才能让它们正常工作......

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] #GoDaddy Hosting

之后,Clean Url测试仍然失败,但Clean Urls实际上在artonice的回答中引用。

答案 6 :(得分:1)

我在GoDaddy托管中也遇到了这个问题,但实际上解决方案很简单。

在.htaccess中取消注释以下行后,干净的URL测试按预期传递:

# RewriteBase /

请注意,我的网站是在域根目录下运行的。