Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess带有查询参数的永久重定向_.htaccess - Fatal编程技术网

.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]