Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Wordpress mod rewrite爆炸%{HTTP_HOST}_Wordpress_Apache_Redirect_Mod Rewrite_Url Rewriting - Fatal编程技术网

Wordpress mod rewrite爆炸%{HTTP_HOST}

Wordpress mod rewrite爆炸%{HTTP_HOST},wordpress,apache,redirect,mod-rewrite,url-rewriting,Wordpress,Apache,Redirect,Mod Rewrite,Url Rewriting,我遇到了一个以前从未遇到过的情况,需要一些有趣的mod_重写规则,我找不到任何人试图在类似配置中实现相同功能的例子 目前我有两个域名,它们被配置为共享同一个文档根,在所述文档根中是一个动态php应用程序,它基于传入的主机名,显示特定于该域的内容 用于示例目的的域包括: www.example1.com 及 (一个是TLD,另一个不是) 除此应用程序外,还有两个wordpress安装,两个域名各安装一个。由于我们没有在这里使用wordpress MU,我需要一些奇特的重写,首先隐藏wordpre

我遇到了一个以前从未遇到过的情况,需要一些有趣的mod_重写规则,我找不到任何人试图在类似配置中实现相同功能的例子

目前我有两个域名,它们被配置为共享同一个文档根,在所述文档根中是一个动态php应用程序,它基于传入的主机名,显示特定于该域的内容

用于示例目的的域包括:

www.example1.com

(一个是TLD,另一个不是)

除此应用程序外,还有两个wordpress安装,两个域名各安装一个。由于我们没有在这里使用wordpress MU,我需要一些奇特的重写,首先隐藏wordpress文件夹,然后根据HTTP_主机将请求提交到正确的文件夹

目前我有以下几点:

RewriteRule ^wp-content(.*) wordpress/example1$1 [L]
RewriteRule ^wp-admin(.*) wordpress/example1/wp-admin$1 [L]
RewriteRule ^wp-login.php$ wordpress/example1/wp-login.php [L,R=301]
RewriteRule ^wp-admin(.*) wordpress/${HTTP_HOST}/wp-admin$1 [L]
以及针对特定内容页面的类似规则

这在单wordpress安装中效果很好,但在第二次安装中显然不行,我希望在这里做的事情如下所示:

RewriteRule ^wp-content(.*) wordpress/example1$1 [L]
RewriteRule ^wp-admin(.*) wordpress/example1/wp-admin$1 [L]
RewriteRule ^wp-login.php$ wordpress/example1/wp-login.php [L,R=301]
RewriteRule ^wp-admin(.*) wordpress/${HTTP_HOST}/wp-admin$1 [L]
但是,我需要从${HTTP_HOST}变量(或www.and.co.uk)中删除www.and.com


如果您对实现此目的的方法或更好的方法有任何建议,我们将不胜感激。

您可以使用RewriteCond检查HTTP\U主机中的模式,然后捕获该模式的一部分

例如:

RewriteCond %{HTTP_HOST} ^(?:www\.)?([a-zA-Z0-9_-]+)\.(?:com|co\.uk)$
RewriteRule ^wp-admin(.*) wordpress/%1/wp-admin$1 [L]
上面的RewriteCond指令检查HTTP_主机是否适合以“.com”或“.co.uk”结尾并可选地以“www.”开头的域模式。如果有,它将捕获域名中有趣的部分

然后,RewriteRule(仅在RewriteCond匹配时激发)能够通过使用
%1
反向引用引用RewriteCond模式的捕获部分


我在上面的RewriteCond中使用的模式可能并不完全适合您的需要,但一旦您知道可以使用RewriteCond捕获的模式的反向引用,您就可以很容易地使用它来获得所需的效果。

Perfect,这正是我要寻找的语法。感谢ArkanonIn,另外,对于任何想做simlar事情的人,我使用上述过程设置了一个环境变量,我可以在随后的重写规则中使用它(因此我没有多个条件)<代码>重写规则[E=Wp:%1]
重写规则^Wp admin(.*)wordpress/%{ENV:Wp}/Wp admin$1[L]