我正在安装基于YII2高级主题的应用。它在Apache上运行得非常漂亮,但是在IIS 7上安装时,漂亮的URL只是非常糟糕,我正在使用以下web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rewriteMaps" overrideModeDefault="Allow" />
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
但是这个不行,因为在打开特定路线时,它会尝试前往那条路线,而不是在YII2内建立正确的路线。
这个问题可以在正在抛出的错误上看到,你可以看到它试图打开物理路径\ web \ user \ login,这显然不存在。相反,它应该打开像.../index.php?r=controller/action
在apache上我会用:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
任何可以帮助我解决问题的想法。
答案 0 :(得分:0)
经过几天的搜索并试图理解为什么dos不起作用。没有太多运气。
最后我找到了。
<强> FIRST:强>
确保在IIS7上安装了URL Rewrite。
如果您有web.config配置,并且它仍然路由到物理目录而不是路由器/行动路线,则几乎100%意味着您缺少URL Rewrite
。是的,这是一个不一定安装的插件。
请继续,从URL Rewrite
下载并安装到您的国际空间站上 <强> SECOND:强>
这是实际工作的web.config。请注意,我以match url=".*"
结尾,并注意到我添加了一行来处理图像和其他静态内容。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rewriteMaps" overrideModeDefault="Allow" />
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
<system.webServer>
<rewrite>
<rules>
<rule name="Yii2 Routing that works" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" pattern="css|js|jpg|jpeg|png|gif|ico|htm|html" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
最终 如果您使用的是YII2高级主题,请务必在两个Web目录中更新和配置web.config。
这个menas,你将需要它们:
C:\ webroot的**** \ WWW \后端\网络\的web.config
C:\ webroot **** \ www \ frontend \ web \ web.config
一定要更新你的main.php«或config.php on basic» 在高级版上,你需要确保你的enablePrtettyUrl配置为前端和后端:
C:\根目录**** \ WWW \后端\配置\ main.php
C:\ webroot **** \ www \ frontend \ config \ main.php
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
...
]
我仍在调试并尝试解决一些小问题,如果我发现其他问题,我会更新。