重写 ASP URL 并获得重定向循环
Rewriting ASP URL and getting Redirect Loop
我有一个脚本可以将 example.com/folder/index.php/pagename
替换为 example.com/pagename
。
但是 example.com/pagename
在技术上不存在 - 所以如果有人导航到它,他们会得到 404。
我试图在我的 web.config 文件中添加一个重定向,如下所示:
<rewrite>
<rules>
<rule name="my redirect" stopProcessing="true">
<match url="pagename" />
<action type="Redirect" url="http://www.example.com/folder/index.php/pagename/" redirectType="permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
但这会导致重定向循环。我注意到,如果我将最终的 URL 更改为 example.com/pagenamealternate
之类的不同内容,它就可以正常工作。
谁能告诉我是否有解决此问题的便捷条件或替代方法?
你得到一个重定向循环,因为你的模式 pagename
也匹配目标 URL,其中有 pagename
。
将您的匹配项 url 更改为 ^pagename$
,现在重写规则仅适用于具有确切 url 的请求:example.com/pagename
,您可能希望允许额外的页面名称后的文本,然后使用:^pagename
作为匹配模式。
正则表达式中的 ^
表示字符串的开头,这是有效的,因为重写引擎会查看主机名部分之后的所有内容。
同时考虑重写操作而不是重定向。
我有一个脚本可以将 example.com/folder/index.php/pagename
替换为 example.com/pagename
。
但是 example.com/pagename
在技术上不存在 - 所以如果有人导航到它,他们会得到 404。
我试图在我的 web.config 文件中添加一个重定向,如下所示:
<rewrite>
<rules>
<rule name="my redirect" stopProcessing="true">
<match url="pagename" />
<action type="Redirect" url="http://www.example.com/folder/index.php/pagename/" redirectType="permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
但这会导致重定向循环。我注意到,如果我将最终的 URL 更改为 example.com/pagenamealternate
之类的不同内容,它就可以正常工作。
谁能告诉我是否有解决此问题的便捷条件或替代方法?
你得到一个重定向循环,因为你的模式 pagename
也匹配目标 URL,其中有 pagename
。
将您的匹配项 url 更改为 ^pagename$
,现在重写规则仅适用于具有确切 url 的请求:example.com/pagename
,您可能希望允许额外的页面名称后的文本,然后使用:^pagename
作为匹配模式。
正则表达式中的 ^
表示字符串的开头,这是有效的,因为重写引擎会查看主机名部分之后的所有内容。
同时考虑重写操作而不是重定向。