Drupal 在 IIS 上清理 URL

Drupal 在 IIS 上清理 URL

当服务器是 IIS 时,有什么想法可以在 drupal 上启用清理 URL?

答案1

通过谷歌快速搜索,找到了本指南,Drupal 清理 IIS 上的 URL。这有帮助吗?

答案2

经过一番努力,我和出色的托管管理员终于成功让 Ionic ISAPI 重写过滤器 (IIRF) 2.0.1.1013 RELEASE 在 IIS v6.0 上运行。我想发布一下我们是如何让它运行起来的;希望我们的解决方案能帮到您!

在开始之前,我的网站在另一种类型的服务器上运行,因此我现有的 Drupal 配置遇到了一些问题。因此,如果您已经在其他地方设置了网站,请确保执行以下操作移至新服务器:

  1. 在 Drupal 的管理 -> 站点配置 -> 清理 URL 中禁用清理 URL
  2. 如果您已Global Redirect打开该模块,请确保在管理 -> 站点配置 -> 全局重定向中将“非清洁到清洁”选项设置为“关闭”

以下是我们使其运行所采取的步骤:

  1. 下载了 Ionic ISAPI 重写过滤器 2.0.1.1013 版本并解压缩文件
  2. 按照指南中的说明操作。指南包含在 AdminGuide > Help > IirfGuide.chm 的 ZIP 文件中。我们使用了本文末尾引用的 IirfGlobal.ini 文件。
  3. 重新启动 IIS
  4. 在站点的根文件夹中创建一个 Iirf.ini 文件,仅输入StatusUrl /iirsStatus RemoteOk。然后我们通过转到 来测试 IIRS 是否正常工作http://mysite.example.com/iirsStatus。它应该会为您打印出一些状态行。
  5. 将 Iirf.ini 文件更改为其最终形式,如本文末尾所述
  6. 再次启用清理 URL。但不要打开Global Redirect“非清洁到清洁”选项!它将无限地重定向页面。

IirfGlobal.ini:

RewriteEngine ON
RewriteFilterPriority DEFAULT
NotifyLog OFF

Iirf.ini文件:

# Do not pass to drupal if the file or directory exists
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Handle query strings on the end
RewriteRule /(.*)\?(.*)$ /index.php\?q=$1&$2 [I,L]

# now pass through to the generic handler
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php?q=$1 [I,L]

答案3

Drupal 网站上有一些关于在 II6 中使用干净 URL 的文档,我目前正在使用。请查看http://drupal.org/node/3854

简短的回答是从下载 ISAPI Rewrite 2 litehttp://www.isapirewrite.com/。精简版仅允许您为整个 IIS 配置配置一组重写规则,但运行良好并且免费。

付费版本允许您为在 IIS 中配置的每个站点指定重写规则,但需要更多 IIS 配置。

我使用的 ISAPI 规则是:

#Helicon ISAPI_Rewrite 配置文件
# 版本 3.1.0.62

重写引擎开启
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
重写规则 ^(.*)$ /index.php?q=$1 [L,QSA]

如果您的 Drupal 安装在子目录下,您可能需要稍微调整这些规则。

答案4

我通过安装 URL 重写器模块并在基目录中创建 web.config 文件并使用以下代码实现了此功能:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <rewrite>
    <rules>
      <rule name="Drupal clean URLs" enabled="true">
        <match url="^(.*)$" ignoreCase="false" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />    
          <add input="{REQUEST_URI}" negate="true" pattern="/favicon.ico$" />
        </conditions>
        <action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
      </rule>
    </rules>
  </rewrite>
</configuration>

还有更多信息在这篇文章中,其中继续写道:“您还需要安装一个修补程序来纠正通过 FastCGI 模块使用 PHP 时的 REQUEST_URI 行为。请参阅KB954946了解更多信息。此问题的一个症状是所有表单提交都被重定向到网站首页。”

相关内容