【问题标题】:IIS RewriteBase for an .htaccess.htaccess 的 IIS RewriteBase
【发布时间】:2020-06-21 00:57:35
【问题描述】:

在 IIS 中,RewriteBase 不起作用。因此,下面的.htaccess 规则已转换为 IIS Web 配置。但在 IIS 中,它给出 400 Bad Request 错误。我需要更正什么?

Htaccess 规则

RewriteRule api/(.*)$ api.php?request=$1 [QSA,NC,L]

IIS 转换规则

<rule name="Imported Rule 1" stopProcessing="true">
    <match url="api/(.*)$"/>
    <action type="Rewrite" url="api.php?request={R:1}" appendQueryString="true"/>
</rule> 

【问题讨论】:

标签: iis mod-rewrite


【解决方案1】:

假设您的 RewriteBase 指令设置如下:

RewriteBase /subdir

然后您只需将此“前缀”附加到目标 URL 的开头(即 IIS 指令中的 RewriteRule substitutionurl 属性值)。具体来说,它应该只作为 relative 替换字符串的前缀。

例如:

RewriteRule api/(.*)$ /subdir/api.php?request=$1 [QSA,NC,L]

换句话说:

<action type="Rewrite" url="/subdir/api.php?request={R:1}" appendQueryString="true"/>

如果设置了RewriteBase /,则只需在前面加上一个斜杠,例如。 url="/api.php?request={R:1}"

这就是RewriteBase 指令所做的一切。当在 directory 上下文中使用时,它为相对路径替换设置 URL 前缀。

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2013-08-27
    • 1970-01-01
    • 2019-11-01
    • 2015-11-16
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多