如何为IIS的干净URL编写URL重写入站规则

时间:2019-05-12 14:45:02

标签: iis url-rewriting typo3 clean-urls

我已经在服务器2012R2和IIS上运行Typo3。在同一服务器上还安装了交换机。 Typo3现在会创建干净的URL,但是此URL始终会产生404错误。我找到了解决此问题的方法

<system.webServer>
    <defaultDocument>
        <files>
            <add value="index.php" />
        </files>
    </defaultDocument>
    <rewrite>
        <rules>
            <rule name="SpeakingURL" enabled="false">
                <match url="(^(typo3|fileadmin|typo3temp|uploads)/|\.(php|js|css|jpg|png|gif|pdf)$)" negate="true" />
                <action type="Rewrite" url="index.php" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

,但是交换无法正常工作。因此,我必须寻找一种仅检测干净URL的解决方案。

示例:http; // www.myDomain.com/customers/name/location 我必须将该网址发送到index.php。

URL中没有查询字符串,路径中没有点或任何扩展名。 我该如何为IIS URL重写建立规则,将传入的干净URL传递给index.php?

2 个答案:

答案 0 :(得分:0)

您的问题是两种虚拟URL。

我对交流了解不多,但是我知道TYPO3。

在TYPO3中,您有一些用于存放图像,CSS,JS等文件的真实文件夹,并且所有HTML都是虚拟的。尽管您具有文件的确切路径,但只有虚拟内容才负责HTML(虚拟页面)的路径。这使得很难给出重写的修复规则。
在普通的TYPO3安装中,您只有那些真实的文件,其余的是虚拟的并由/index.php处理。 但这仅在使用TYPO3 9或扩展名realurl(或旧的simulatestatic)时有效。否则,TYPO3仅使用index.php并处理URL参数中的其余部分(例如?id=124&L=2&type=98

解决方案:
禁用realurl(con:没有好的URL)
或使用扩展名staticfilecache,该扩展名会将所有CMS页导出为真实文件,因此无需重写(例如:无“动态”内容)。

答案 1 :(得分:0)

似乎是我找到了解决问题的方法。到目前为止,它对我来说还不错。 我在wwwroot下的web.config文件的system.webServer部分中添加了以下代码。

   <defaultDocument>
        <files>
            <add value="index.php" />
        </files>
    </defaultDocument>
    <rewrite>
        <rules>
            <clear />
            <rule name="Clean URL" enabled="true">
                <match url="(.*)" />
                <action type="Rewrite" url="index.php" />
                <conditions>
                   <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                   <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
               </conditions>
           </rule>
        </rules>
    </rewrite>

这是针对Typo3 9,5+的