当服务器是 IIS 时,有什么想法可以在 drupal 上启用清理 URL?
答案1
通过谷歌快速搜索,找到了本指南,Drupal 清理 IIS 上的 URL。这有帮助吗?
答案2
经过一番努力,我和出色的托管管理员终于成功让 Ionic ISAPI 重写过滤器 (IIRF) 2.0.1.1013 RELEASE 在 IIS v6.0 上运行。我想发布一下我们是如何让它运行起来的;希望我们的解决方案能帮到您!
在开始之前,我的网站在另一种类型的服务器上运行,因此我现有的 Drupal 配置遇到了一些问题。因此,如果您已经在其他地方设置了网站,请确保执行以下操作前移至新服务器:
- 在 Drupal 的管理 -> 站点配置 -> 清理 URL 中禁用清理 URL
- 如果您已
Global Redirect
打开该模块,请确保在管理 -> 站点配置 -> 全局重定向中将“非清洁到清洁”选项设置为“关闭”
以下是我们使其运行所采取的步骤:
- 下载了 Ionic ISAPI 重写过滤器 2.0.1.1013 版本并解压缩文件
- 按照指南中的说明操作。指南包含在 AdminGuide > Help > IirfGuide.chm 的 ZIP 文件中。我们使用了本文末尾引用的 IirfGlobal.ini 文件。
- 重新启动 IIS
- 在站点的根文件夹中创建一个 Iirf.ini 文件,仅输入
StatusUrl /iirsStatus RemoteOk
。然后我们通过转到 来测试 IIRS 是否正常工作http://mysite.example.com/iirsStatus
。它应该会为您打印出一些状态行。 - 将 Iirf.ini 文件更改为其最终形式,如本文末尾所述
- 再次启用清理 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了解更多信息。此问题的一个症状是所有表单提交都被重定向到网站首页。”