Drupal 7 清理在Drupal 7中不起作用的URL

Drupal 7 清理在Drupal 7中不起作用的URL,drupal-7,clean-urls,Drupal 7,Clean Urls,我刚刚安装并开始使用Drupal7,然后按照说明打开干净的URL。我单击了“运行干净的URL测试”按钮,但它没有返回任何结果。它加载一些内容,然后刷新页面 有人能解释为什么会发生这种情况,以及我能做些什么吗?创建文件phpinfo.php,内容:,然后通过浏览器加载它。查找文本“加载的模块”,它应该包含“mod_rewrite”。如果没有,请在apache配置中启用它(您可能会问如何启用)。有时候,打开清理后的URL页面会失败,并且不会显示错误(从系统的角度来看,我猜没有错误)。尝试从以下位置手

我刚刚安装并开始使用Drupal7,然后按照说明打开干净的URL。我单击了“运行干净的URL测试”按钮,但它没有返回任何结果。它加载一些内容,然后刷新页面


有人能解释为什么会发生这种情况,以及我能做些什么吗?

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

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

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

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

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

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

允许超越所有
AccessFileName.htaccess

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 Url实际上可以按照artonice的答案工作。

我在GoDaddy主机上也遇到过这个问题,但解决方案实际上相当简单

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

# RewriteBase /

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

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

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

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

RewriteBase /drupal7
不要添加
RewriteBase/drupal


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

它已经启用。有没有另一种方法来设置干净的URL?这个按钮显然不适合我。哦,顺便说一下,我的drupal安装位于服务器的子文件夹中,所以不是root。我知道这在Drupal6中是个问题,但我不知道这在Drupal7中是否仍然重要。好的,通过修改httpd.conf文件解决了这个问题。这个页面对我很有帮助:我阅读了这个页面,发现我的问题是在我的Apache virtualhost配置中需要“AllowOverride All”,它允许股票Drupal.htaccess工作,这反过来又允许启用干净的URL。谢谢你,这为我在一个干净的Ubuntu 12.04 LTS测试版上修复了它。我已经正确地设置了一切,修改了,允许了覆盖,但是Drupal测试仍然失败。我想这只是Drupal中的一个bug,因为当你使用这个url并启用它时,一切都正常了。我希望我能在浪费3个多小时之前读到这篇文章。谢谢你,阿托妮!就是有这个问题。这也解决了我的问题。哇。。。谢谢成功了。请在项目根目录中打开.htaccess文件。取消对RewriteBase/drupal的注释,并将其更改为您的项目名称,如RewriteBase/myprojectname Comment RewriteBase/#如果您的站点在以下位置的VirtualDocumentRoot中运行:,#取消对以下行的注释:RewriteBase/godady I did like->it worksMy.htaccess非常类似:RewriteBase上的RewriteEngine/RewriteCond%{REQUEST_FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则^(.*)$index.php?q=$1[L,QSA]
#RewriteRule ^ index.php [L]
 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
RewriteBase /drupal7