Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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重定向wordpress admin的子域_Wordpress_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

使用带有查询字符串的.htaccess重定向wordpress admin的子域

使用带有查询字符串的.htaccess重定向wordpress admin的子域,wordpress,.htaccess,redirect,mod-rewrite,Wordpress,.htaccess,Redirect,Mod Rewrite,我一直在浏览互联网,还没有找到一个解决方案,所以任何帮助将不胜感激 情景 我想通过附加另一个查询字符串来重定向带有查询字符串的子域文件。例如: https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value RewriteCond %{QUERY_STRING} key=value RewriteCond %{QUERY_STRING} !new=string$ RewriteRule ^wp-admin/admin\.php$

我一直在浏览互联网,还没有找到一个解决方案,所以任何帮助将不胜感激

情景

我想通过附加另一个查询字符串来重定向带有查询字符串的子域文件。例如:

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value
RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !new=string$
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?%{QUERY_STRING}&new=string [R,L]

尝试

我需要在.htaccess中添加此重定向规则。我尝试过QSA追加,但没有效果:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} key=value
    RewriteRule ^admin\.php$ /admin.php?new=string [QSA,L]
</IfModule>
您认为解决方案是什么?

您现有的规则是内部重写。要使其成为重定向,只需添加R标志。但是,您似乎也缺少URL中的/wp admin path段

因此,尝试以下方法:

RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !^new=string
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?new=string [R,QSA,L]
与原始代码一样,这只是检查查询字符串中的key=value,而不是源URL中的foo=bar&key=value

UPDATE:第二个RewriteCond指令通过确保new=string在查询字符串的开头不存在来防止重定向循环

QSA标志将导致请求上的查询字符串附加到替换中。因此,结果URL将变成…?new=string&foo=bar&key=value,而不是?foo=bar&key=value&new=string,就像您最初的需求一样-这是一个问题吗

更新:如果您特别需要将new=string URL参数附加到查询字符串,那么您应该删除QSA标志并使用query_string服务器变量。例如:

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value
RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !new=string$
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?%{QUERY_STRING}&new=string [R,L]
您现有的规则是内部重写。要使其成为重定向,只需添加R标志。但是,您似乎也缺少URL中的/wp admin path段

因此,尝试以下方法:

RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !^new=string
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?new=string [R,QSA,L]
与原始代码一样,这只是检查查询字符串中的key=value,而不是源URL中的foo=bar&key=value

UPDATE:第二个RewriteCond指令通过确保new=string在查询字符串的开头不存在来防止重定向循环

QSA标志将导致请求上的查询字符串附加到替换中。因此,结果URL将变成…?new=string&foo=bar&key=value,而不是?foo=bar&key=value&new=string,就像您最初的需求一样-这是一个问题吗

更新:如果您特别需要将new=string URL参数附加到查询字符串,那么您应该删除QSA标志并使用query_string服务器变量。例如:

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value
RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !new=string$
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?%{QUERY_STRING}&new=string [R,L]

如果需要重定向,则需要R标志。您上面提到的是内部重写,这可能与WordPress路由冲突。谢谢您的建议。我是否需要将重写规则重新格式化为RewriteRule^admin\.php$/admin.php?foo=bar&key=value&new=string[R=301,L]?另外,这个.htaccess文件位于哪里?它位于子域中,例如:root/public\u html/sub/.htaccess如果要重定向,需要R标志。您上面提到的是内部重写,这可能与WordPress路由冲突。谢谢您的建议。我是否需要将重写规则重新格式化为RewriteRule^admin\.php$/admin.php?foo=bar&key=value&new=string[R=301,L]?还有,这个.htaccess文件在哪里?它在子域中,比如:root/public\u html/sub/.htaccess谢谢你的建议。我认为这很接近,但不是很接近。我希望在结尾追加新的=字符串。但是,使用[R,QSA,L]标志,new=string查询会在URL中无休止地重复,因此会出现错误。我尝试使用[R,L]标志并在重写规则的末尾使用准确的URL,即/wp admin/admin.php?foo=bar&key=value&new=string[R,L]。这让我找到了正确的URL,但是出现了很多错误的重定向。有什么建议吗?啊,是的,对不起,需要一个附加条件来防止重定向循环。我已经更新了我的答案,并提供了一个示例,在查询字符串的末尾而不是开头追加URL参数。这正是我所需要的。从未想过第二个条件。非常感谢。谢谢你的建议。我认为这很接近,但不是很接近。我希望在结尾追加新的=字符串。但是,使用[R,QSA,L]标志,new=string查询会在URL中无休止地重复,因此会出现错误。我尝试使用[R,L]标志并在重写规则的末尾使用准确的URL,即/wp admin/admin.php?foo=bar&key=value&new=string[R,L]。这让我找到了正确的URL,但是出现了很多错误的重定向。有什么建议吗?啊,是的,对不起,需要一个附加条件来防止重定向循环。我已经更新了我的答案,并提供了一个示例,在查询字符串的末尾而不是开头追加URL参数。这正是我所需要的。从未想过第二个条件。非常感谢。