1

我在我的 ISS 服务器上使用 get simple cms(实际上必须使用 ISS),并且有一个插件可以使用web.config.

web.config 来源:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="GetSimple Fancy URLs" stopProcessing="true">
                <match url="^([^/]+)/?$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="?id={R:1}" />
            </rule>
     </rules>
    </rewrite>
</system.webServer>
</configuration>

但我的 CMS 在主文件夹/和子文件夹上/en,例如:

http://domainname.com/(主 cms) http://domainname.com/en/(子文件夹上的另一个 cms)

有了web.config上述,主 cms 工作成功,但子文件夹上的 cms 不工作(像以前一样给出 404)

我怎样才能实现该子文件夹规则web.config file?所以 2 cms 工作成功。

我试图将相同的 web.config 文件放在子文件夹 ( /en) 下,但它不起作用。

非常感谢,

4

1 回答 1

0

首先,您的正则表达式只会匹配实际上位于您网站根目录中的 URL,例如domain.com/pagedomain.com/anotherpage. 它不会匹配像domain.com/subdir/page. 但这可能正是你想要的,我不知道。

为了使其也能正常工作/en,请将规则更改为:

<rule name="GetSimple Fancy URLs" stopProcessing="true">
    <match url="^(en/)?([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="{R:1}?id={R:2}" />
</rule>

如果您想要一个适用于任何两个字符语言代码的更通用的解决方案,请使用:

<rule name="GetSimple Fancy URLs" stopProcessing="true">
    <match url="^([a-z]{2}/)?([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="{R:1}?id={R:2}" />
</rule>

这应该只是在web.config您的根目录中。

于 2012-11-16T12:14:43.153 回答