请求将.htaccess转换为IIS7的web.config文件(Win10服务器)
IIS 7下.htaccess转web.config配置方案
场景说明
Windows 10系统、IIS 7版本服务器,使用在线工具转换.htaccess为web.config后无法正常运行,以下是对应正确的转换配置及注意事项。
原.htaccess规则逻辑
原配置核心实现两类重写逻辑:
- 后台/admin路径的资源转发,以及所有admin请求统一指向
backend/web/index.php - 前台静态资源转发,以及非文件/非目录的请求统一指向
frontend/web/index.php
转换后的web.config代码
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <!-- 处理admin下的assets资源转发 --> <rule name="Admin Assets Rewrite" stopProcessing="true"> <match url="^admin/assets/(.*)$" /> <conditions> <add input="{REQUEST_URI}" pattern="^/<foldername>/admin" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/backend/web/(assets|css)/" negate="true" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/backend/web/(assets|js)/" negate="true" /> </conditions> <action type="Rewrite" url="backend/web/assets/{R:1}" /> </rule> <!-- admin路径请求统一指向后台入口文件 --> <rule name="Admin Entry Rewrite" stopProcessing="true"> <match url="^.*$" /> <conditions> <add input="{REQUEST_URI}" pattern="^/<foldername>/admin" /> </conditions> <action type="Rewrite" url="backend/web/index.php" /> </rule> <!-- 前台assets资源转发 --> <rule name="Frontend Assets Rewrite" stopProcessing="true"> <match url="^assets/(.*)$" /> <conditions> <add input="{REQUEST_URI}" pattern="^/<foldername>/(assets|css)" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/(assets|js)" /> </conditions> <action type="Rewrite" url="frontend/web/assets/{R:1}" /> </rule> <!-- 前台非资源/非文件请求统一指向前台入口文件 --> <rule name="Frontend Entry Rewrite" stopProcessing="true"> <match url="^.*$" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_URI}" pattern="^/<foldername>/(frontend|backend)/web/(assets|css)/" negate="true" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/(frontend|backend)/web/(assets|js)/" negate="true" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/download/" negate="true" /> <add input="{REQUEST_URI}" pattern="^/<foldername>/fonts/" negate="true" /> <add input="{REQUEST_URI}" pattern="index.php" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="frontend/web/index.php" /> </rule> </rules> </rewrite> <!-- 对应原.htaccess的Options +FollowSymlinks,允许符号链接访问 --> <symlinkValidation enabled="true" /> <directoryBrowse enabled="false" /> </system.webServer> </configuration>
关键配置注意事项
- 替换占位符:将配置中的
<foldername>替换为你的实际网站目录名称 - 启用URL重写模块:确认IIS已安装并启用
URL重写模块(可通过IIS管理器的“模块”功能检查,未安装需下载对应版本的URL重写工具) - 权限设置:确保网站目录对IIS进程账号(通常为IUSR或ApplicationPoolIdentity)拥有读取权限
内容的提问来源于stack exchange,提问作者nitin
相关产品推荐
相关产品推荐

