我已经在服务器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?
答案 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+的