.htaccess带有查询参数的永久重定向
我一直在努力使一个永久的重定向工作。问题是,我发现的所有例子似乎都是以另一种方式工作,而不是我正在寻找的方式.htaccess带有查询参数的永久重定向,.htaccess,.htaccess,我一直在努力使一个永久的重定向工作。问题是,我发现的所有例子似乎都是以另一种方式工作,而不是我正在寻找的方式 page.php?parameter=ID 到 我的结局是 RewriteCond %{QUERY_STRING} parameter=([0-9]+) [NC] RewriteRule (.*) /page/parameter/$1? [R=301,L] 问题是,由于某些原因,这不会在末尾添加ID 请建议您尝试以下方法: RewriteCond %{QUERY_STRING} pa
page.php?parameter=ID
到
我的结局是
RewriteCond %{QUERY_STRING} parameter=([0-9]+) [NC]
RewriteRule (.*) /page/parameter/$1? [R=301,L]
问题是,由于某些原因,这不会在末尾添加ID
请建议您尝试以下方法:
RewriteCond %{QUERY_STRING} parameter=(.+) [NC]
RewriteRule (.*) /page/parameter/%1 [R=301,L,QSD]
只是一点零钱。您需要使用%1
而不是$1
,因为这会获取变量结果。在贾斯汀的帮助下,我现在意识到没有必要使用?
或NE
标志。取而代之的是QSD
标志,它将丢弃原始查询
在测试之前,请确保清除缓存。
NE标志,因为它会阻止原始查询附加到URL的末尾???这绝对不是NE
所做的默认情况下,特殊字符(例如&和?)将转换为其等效的十六进制代码。使用[NE]标志可以防止这种情况发生。
-我的措辞可能有所不同,但这就是它通过在末尾添加?
并使用[NE]
标志所做的。它来自http://example.com/page/parameter/ID%3F?parameter=ID
至http://example.com/page/parameter/ID
您的?
此处仅阻止附加原始查询字符串。这个永远不会被编码。它是(新)查询字符串的开始,永远不会显示在url中。您还可以使用QSD
标志放弃原始查询字符串谢谢Justin,我感谢您的帮助。我还在学习——但当我没有使用[NE]
标志时,它将原始查询添加到URL的末尾。有了它,它就会移除它。我会看看你建议的其他选择。不用担心,不客气。是的,正如我所说,如果没有?
原始查询字符串将自动追加,除非您使用QSD
标志。您可以使用?
(NE
此处不需要),也可以使用QSD
标记您不想重写它吗?我的意思是,/page/parameter/xxx
将作为什么内容?您应该提供与同等的/page.php?parameter=xxx
相同的内容,而“掩蔽”itI期待这个问题。原始页面已被删除,现在使用新的URL结构,我希望用户被重定向到新的、正确的URL,以获取现在由控制器而不是程序页面提供的内容。
RewriteCond %{QUERY_STRING} parameter=(.+) [NC]
RewriteRule (.*) /page/parameter/%1 [R=301,L,QSD]