Seo Isapi重写301重定向解析为404-循环引用?
我正在尝试使用IIS Isapi重写来执行以下操作 我需要seo友好的URL(静默)转换回应用程序友好的URL,如下所示:Seo Isapi重写301重定向解析为404-循环引用?,seo,http-status-code-404,http-status-code-301,isapi-rewrite,Seo,Http Status Code 404,Http Status Code 301,Isapi Rewrite,我正在尝试使用IIS Isapi重写来执行以下操作 我需要seo友好的URL(静默)转换回应用程序友好的URL,如下所示: RewriteRule ^/seo-friendly-url/ /test/index.cfm [I,L] 很简单 但我也需要已经在搜索引擎中索引的URL(例如)被301重定向到seo友好的版本。像这样: RewriteRule ^/test/index.cfm /seo-friendly-url/ [I,R=301] 每一个单独工作都很好。但是当我在我的.ini
RewriteRule ^/seo-friendly-url/ /test/index.cfm [I,L]
很简单
但我也需要已经在搜索引擎中索引的URL(例如)被301重定向到seo友好的版本。像这样:
RewriteRule ^/test/index.cfm /seo-friendly-url/ [I,R=301]
每一个单独工作都很好。但是当我在我的.ini文件中同时有这两个文件时,我的浏览器地址栏中显示了/seo友好的url/但我收到了404。(是的,/test/index.cfm肯定存在!)
我知道它看起来像一个循环引用,但第一条规则只重写IIS和应用程序之间的URL——没有重定向,所以我不会再次使用Isapi重写。还是我错了
我已经启用了Isapi Rewrite上的日志记录,我看到了以下内容:
HttpFilterProc SF_NOTIFY_PREPROC_HEADERS
DoRewrites
New Url: '/seo-friendly-url/'
ApplyRules (depth=0)
Rule 1 : 1
Result (length 15): /test/index.cfm
ApplyRules (depth=1)
Rule 1 : -1
Rule 2 : 1
Result (length 18): /seo-friendly-url/
ApplyRules: returning 301
ApplyRules: returning 1
Rewrite Url to: '/seo-friendly-url/'
有人有什么想法吗?这里有两种不同的重写,如果你做对了,应该可以
经过反复试验,我想出了一个解决办法 使用$符号指定重定向匹配位于字符串末尾:
RewriteRule ^/test/index.cfm$ /seo-friendly-url/ [I,R=301]
使重写的URL与重定向匹配字符串略微不同-在本例中,添加不必要的“?”:
根据文档,不需要L-“重定向规则始终是最后一条规则”。尽管如此,我还是用L进行了尝试,结果是一样的,我把它误读为Apache的mod_重写。我的.htaccess for mod_rewrite中有这样的东西,它工作得很好——看起来有点像一个bug。
RewriteRule ^/seo-friendly-url/ /test/index.cfm? [I,L]