旧域名波斯语URL永久重定向的IIS Rewrite配置问题
波斯语URL永久重定向的IIS Rewrite正确配置
问题背景
需将旧域名下的波斯语URL永久重定向到新域名对应页面:
- 旧URL:
https://sisnogroup.com/%D8%A7%D9%82%D8%A7%D9%85%D8%AA-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%DA%AF%D8%B1%D8%AC%D8%B3%D8%AA%D8%A7%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D9%86%D8%B4-%D8%A2%D9%85%D9%88%D8%B2%D8%A7%D9%86 - 新URL:
https://sisnogroup.ge/fa/%D8%A7%D9%82%D8%A7%D9%85%D8%AA-%DA%AF%D8%B1%D8%AC%D8%B3%D8%AA%D8%A7%D9%86
此前配置的Rewrite规则返回404错误,规则代码如下:
<rule name="Redirect to domain 2" stopProcessing="true"> <match url="^%D8%A7%D9%82%D8%A7%D9%85%D8%AA-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%DA%AF%D8%B1%D8%AC%D8%B3%D8%AA%D8%A7%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D9%86%D8%B4-%D8%A2%D9%85%D9%88%D8%B2%D8%A7%D9%86$" /> <action type="Redirect" url="https://sisnogroup.ge/fa/%D8%A7%D9%82%D8%A7%D9%85%D8%AA-%DA%AF%D8%B1%D8%AC%D8%B3%D8%AA%D8%A7%D9%86" redirectType="Permanent" /> </rule>
失败请求跟踪日志
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/> <EventID>0</EventID> <Version>1</Version> <Level>5</Level> <Opcode>10</Opcode> <Keywords>0x400</Keywords> <TimeCreated SystemTime="2023-06-23T08:45:41.197Z"/> <Correlation ActivityID="{80009014-0000-9500-B63F-84710C7967BB}"/> <Execution ProcessID="16364" ThreadID="13304"/> <Computer>WIN-KF45KMECN9L</Computer> </System> <EventData> <Data Name="ContextId">{80009014-0000-9500-B63F-84710C7967BB}</Data> <Data Name="Pattern">^%D8%A7%D9%82%D8%A7%D9%85%D8%AA-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%DA%AF%D8%B1%D8%AC%D8%B3%D8%AA%D8%A7%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D9%86%D8%B4-%D8%A2%D9%85%D9%88%D8%B2%D8%A7%D9%86$</Data> <Data Name="Input">robots.txt</Data> <Data Name="Negate">false</Data> <Data Name="Matched">false</Data> </EventData> <RenderingInfo Culture="en-US"> <Opcode>PATTERN_MATCH</Opcode> <Keywords> <Keyword>Rewrite</Keyword> </Keywords> </RenderingInfo> <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace"> <EventGuid>{0469ABFA-1BB2-466A-B645-E3E15A02F38B}</EventGuid> </ExtendedTracingInfo> </Event>
问题原因
从日志可见,规则匹配时传入的Input是robots.txt,未匹配到目标波斯语URL;同时IIS Rewrite的match url匹配的是解码后的路径,而非URL编码后的字符串,直接用编码后的%D8%A7...作为匹配模式会导致匹配失败。
正确配置方案
方案1:精确匹配解码后的路径
<rule name="Persian URL Redirect" stopProcessing="true"> <!-- 匹配解码后的完整波斯语路径 --> <match url="^اقامت-تحصیلی-گرجستان-برای-دانش-آموزان$" /> <!-- 限定仅旧域名请求触发重定向 --> <conditions> <add input="{HTTP_HOST}" pattern="^sisnogroup\.com$" /> </conditions> <action type="Redirect" url="https://sisnogroup.ge/fa/اقامت-گرجستان" redirectType="Permanent" /> </rule>
方案2:正则批量匹配(适用于同结构多URL)
如果有多个类似结构的URL需要重定向,可通过正则提取共同部分:
<rule name="Persian URL Batch Redirect" stopProcessing="true"> <match url="^اقامت-تحصیلی-(.*)-برای-دانش-آموزان$" /> <conditions> <add input="{HTTP_HOST}" pattern="^sisnogroup\.com$" /> </conditions> <action type="Redirect" url="https://sisnogroup.ge/fa/اقامت-{R:1}" redirectType="Permanent" /> </rule>
注意事项
- 确保服务器已安装IIS URL Rewrite模块,否则规则无法生效。
redirectType="Permanent"对应301永久重定向,利于搜索引擎更新收录。- 配置完成后测试旧URL跳转情况,同时确认其他页面不受影响。
内容的提问来源于stack exchange,提问作者farhad kazemipour
相关产品推荐
相关产品推荐

