【问题标题】:clean URL test failed D7干净的 URL 测试失败 D7
【发布时间】:2013-05-16 19:02:42
【问题描述】:

我花了大约四个小时试图让干净的 URL 正常工作,这真的让我深有体会。我对 Drupal 非常是新手,在听到所有关于它的精彩内容后,这是令人失望。这是我的设置:

我有XAMPP on windows 7,并将Drupal 7.22 安装到文件夹c:\code\drupal

在我的 httpd.conf 中,我有 Alias /code "C:\code" 这很有效,因为我在 c:\code 中还有其他文件夹运行良好

drupal .htaccess 文件有效,因为如果我在其中添加垃圾行,我会收到服务器错误

.htaccess我尝试了RewriteBase我能想到的所有组合:

RewriteBase /
RewriteBase /code
RewriteBase /code/drupal
RewriteBase /drupal

mod_rewrite 有效,因为我已经有其他正确使用它的安装。

我也试过直接去http://localhost/code/drupal/admin/config/search/clean-urls,但这给了我404 error

每次我回到admin > config > clean URLS,它都说测试失败。我知道这显然是我这边的一些错误,但它变得非常令人沮丧。谁能看到我在这里想念的东西? :(

  • 我在 SO 中阅读了所有类似的问题,但他们的解决方案确实如此 不适合我。
  • 我也在drupal.stackexchange.com 发布了这个 但没有得到任何答案。
  • 自 SO PHP 以来,我将其发布在这里 社区更加活跃,无疑有很多人知道 深入了解drupal。
  • 我真的希望有人能帮我解决这个问题...

【问题讨论】:

  • 如果您查看显示该主机请求的错误日志,是否正在重写 URL?或者它是在不给它重写规则的情况下询问 url?
  • 它没有重写规则。它使用常规 URL 访问 drupal 页面并给出 200 响应。常规 URL 给出一条消息,指出无法启用重写。在线文档建议了我在上面的问题中尝试过的所有东西 - 但无济于事。并且该条目在 access.log 而不是 error.log 中,因为本身没有错误..
  • 尝试用类似RewriteEngine on RewriteBase / RewriteRule ^.*$ http://google.com 这样简单的东西替换整个.htaccess 是否会将您重定向到google.com?您也可以尝试为 rewrite 模块编写日志文件,只需将以下内容添加到您的 httpd.conf 文件中:RewriteLog "/home/rewrite.log" RewriteLogLevel 9 也许日志中会有一些有趣的东西:)
  • @tulvit:感谢您的建议。 1) 是的,它重定向到 google.com。 2) 我在 httpd.conf 中添加了一行,重新启动服务器并尝试访问 url,但文件 rewrite.log 没有被创建。 error.log 也没有说明任何内容...
  • 实际上 - 我错了,它正在创建 rewrite.log(我给出了不存在的文件路径)。让我检查一下,然后再回来!谢谢你,你摇滚!!!

标签: php drupal mod-rewrite clean-urls


【解决方案1】:

我不知道您是否还需要帮助,但我花了很多时间试图自己解决这个问题,但找不到正确的答案。在做了很多试验和错误之后,我让它工作了。我不知道你的设置是怎样的,但这是我的,以及我在drupal.org 上的解决方案。

(这是我原始问题的一部分和我的完整解决方案的副本)

嗨,

我有一个 Drupal 多站点设置,我正在尝试制作干净的 URL 工作,但似乎无法编写条件和规则 适当地。我找到了很多答案,但没有一个有效。

我的 .htaccess 文件被读取没有问题,规则是 正在使用(我尝试将重写规则设置为完整地址,但 它只给了我主页,我不能去其他任何地方)。

设置方法如下:

开发:URL1 www.site1.domain.fr/dev
URL2 www.site2.site1.domain.fr/dev

PROD URL1 www.site1.domain.fr
URL2 www.site2.site1.domain.fr

在服务器上:/dev(一个 drupal 安装)
/prod(另一个drupal安装 但内容相同)

我的多站点设置如下:
/sites/site1.domain.fr
/sites/site2.site1.domain.fr(开发人员和产品人员相同)

在sites.php中:

$sites = array( 
 'www.site1.domain.fr' => 'site1.domain.fr', 
 'www.site2.site1.domain.fr' => 'site2.site1.domain.fr', )


解决方案

我终于能够通过反复试验来修复它。万一你们中的任何一个 遇到同样的问题,我是这样解决的:

DEV: 

RewriteBase /dev

# Main site 
RewriteCond %{HTTP_HOST} ^site1\.domain\.fr [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ site1.domain.fr/dev/index.php?q=$1 [L,QSA]

# Site 2 
RewriteCond %{HTTP_HOST} ^site2.site1\.domain\.fr [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ site2.site1.domain.fr/dev/index.php?q=$1 [L,QSA]


PROD: 

RewriteBase /

# Main site 
RewriteCond %{HTTP_HOST} ^site1\.domain\.fr [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ site1.domain.fr/index.php?q=$1 [L,QSA]

# Site 2 
RewriteCond %{HTTP_HOST} ^site2.site1\.domain\.fr [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ site2.site1.domain.fr/index.php?q=$1 [L,QSA]

【讨论】:

  • 不是链接到你的解决方案,你能在这里描述一下吗?否则你的答案没有很多实质内容,它可能会遭受链接腐烂。
  • 这里我加了。抱歉,当我粘贴它时,所有东西都粘在一起了。
  • @CarolineCB - 我意识到我从未将您的答案标记为正确!嗯......已经晚了将近一年,但仍然 - 谢谢!
猜你喜欢
  • 2012-09-27
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多