干净的网址在 Drupal 7 中不起作用 [关闭]

Posted

技术标签:

【中文标题】干净的网址在 Drupal 7 中不起作用 [关闭]【英文标题】:Clean urls not working in Drupal 7 [closed] 【发布时间】:2011-10-07 06:34:07 【问题描述】:

我刚刚安装并开始使用 Drupal 7,并按照说明打开了 Clean Urls。我单击了“运行 Clean URL 测试”按钮,但没有返回任何结果。它加载一些东西,然后刷新页面。

谁能解释为什么会发生这种情况以及我能做什么?

【问题讨论】:

在您的项目根目录中打开您的 .htaccess 文件。取消注释 RewriteBase /drupal 并将其更改为您的项目名称,例如 RewriteBase /myprojectname Comment RewriteBase / # 如果您的站点在 example.com 的 VirtualDocumentRoot 中运行,# 取消注释以下行:RewriteBase / godady I did like -> 它可以工作 【参考方案1】:

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

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

到:

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

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

【讨论】:

感谢您,它为我在干净的 Ubuntu 12.04 LTS 测试版上修复了它。我已经正确设置了所有内容,mod_rewrite,allowoverride,但 Drupal 测试仍然失败。我想这只是 Drupal 中的一个错误,因为当您使用该 url 并启用它时,一切正常。 哇。我希望我在浪费 3 个多小时之前阅读此内容。谢谢你! 遇到了这个确切的问题。 这也解决了我的问题。 哇...谢谢。那行得通。【参考方案2】:

创建文件phpinfo.php,内容:<?php phpinfo();?> 然后通过浏览器加载。查找文本“加载模块”,它应该包含“mod_rewrite”。如果没有,请在您的 apache 配置中启用它(您可能会问如何启用)。

【讨论】:

已经启用。有没有办法以另一种方式设置干净的网址?这个按钮显然不适合我。 哦,顺便说一句,我的 drupal 安装在服务器的子文件夹中,所以不是 root。我知道这是 Drupal 6 中的一个问题,但我不知道它在 Drupal 7 中是否仍然重要。 好的,通过修改httpd.conf文件解决了。这个页面对我很有帮助:drupal.org/getting-started/clean-urls 我阅读了该页面,发现我的问题是在我的 Apache 虚拟主机配置中需要“AllowOverride All”,这允许库存 Drupal .htaccess 工作,从而允许启用干净的 URL。【参考方案3】:

您的 apache 配置文件 (/etc/apache2/apache2.conf) 必须包含以下 2 行。如果没有,则添加它们。这告诉 apache 在文件夹 “/var/www/drupal” 中查找 .htaccess 文件以进行设置

<Directory /var/www/drupal>
  AllowOverride All
</Directory>
AccessFileName .htaccess

【讨论】:

【参考方案4】:

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

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

并添加:

RewriteBase /drupal7

不要添加RewriteBase /drupal

现在测试正常,一切正常。

【讨论】:

我的 .htaccess 非常相似: RewriteEngine On RewriteBase / RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php?q=$1 [ L,QSA]【参考方案5】:

您必须在 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

【讨论】:

【参考方案6】:

我在 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 Test 仍然失败,但 Clean Url 实际上按照 artonice 的答案中所引用的那样工作。

【讨论】:

【参考方案7】:

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

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

# RewriteBase /

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

【讨论】:

以上是关于干净的网址在 Drupal 7 中不起作用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript代码片段在drupal中不起作用

页面在 Firefox 和 IE 中不起作用 [关闭]

Bootstrap 模态隐藏在 Laravel 7 中不起作用

固定定位在 Safari 7 中不起作用

网址在 Django 中不起作用

在 Drupal 7 中更改寻呼机格式