你好,我想为我的wordpress创建一个本地沙盒,并保持与托管服务器完全相同的主机名;因此,当我重新上传所有内容和数据库时,所有内容都保持1:1。
我不能通过windows hosts file 在windows中,因为我需要一个不同于80的端口,并且不想将wordpress站点url设置为类似mydomain的内容。通讯:8080
我尝试用FoxyProxy设置一些正则表达式规则:即重定向mydomain。com->192.168.0。x端口:8080
除了wordpress之外,Eveyrhting都可以工作:它创建了301 infinite redirect 最终url如下所示:
http://mydomain.comhttp//mydomain.comhttp//mydomain.com (注意下面的冒号)
其中一个标题如下所示:
Status Code:301 Moved Permanently Remote Address:192.168.0.10:80
Referrer Policy:no-referrer-when-downgrade Response Headers view
source Content-Length:2 Content-Type:text/html; charset=UTF-8
Date:Wed, 16 Aug 2017 06:19:11 GMT
Location:http://mydomain.comhttp://mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp//mydomain.comhttp/mydomain.com/
Server:Apache/2.4.18 (Ubuntu) Request Headers view source Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,fr-FR;q=0.6,fr;q=0.4
Cache-Control:no-cache Host:mydomain.comhttp Pragma:no-cache
Proxy-Connection:keep-alive Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90
Safari/537.36
Where can i find the php file that make the redirects so I can try to find what is going on? 感谢
编辑:我的HTACCESS文件(我使用帖子名permalinks):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
编辑:刚刚发现:wp\\u重定向看起来错误,我将进一步调查。
wp\\U重定向函数处的PHP调试回溯:
array(8) {
[0]=>
array(4) {
["file"]=>
string(69) "/home/mydomain/www/public_html/mydomain.com/wp-includes/canonical.php"
["line"]=>
int(516)
["function"]=>
string(11) "wp_redirect"
["args"]=>
array(2) {
[0]=>
&string(37) "http://mydomain.comhttp/mydomain.com/"
[1]=>
&int(301)
}
}
[1]=>
array(2) {
["function"]=>
string(18) "redirect_canonical"
["args"]=>
array(1) {
[0]=>
&string(0) ""
}
}
索引重定向之外的所有内容都可以工作#1:管理面板、登录页等。
看起来重定向规范函数中有问题,我将调查代码,看看是什么导致了这个问题。
使用FoxyProxy真是太棒了。我可以在任何地方、任何IP、任何端口单击从沙盒服务器切换到托管服务器,而无需更改主机名或代码中的任何内容。
SO网友:TheMedServ
发现问题/解决方案:
使用代理时,服务器变量REQUEST\\u URI不同
使用FoxyProxy,服务器var“REQUEST\\u URI”返回完整url:
$_SERVER[\'REQUEST_URI\'] -> “”hxxp://mydomain.com/theurl“”
使用windows主机文件,服务器var“REQUEST\\u URI”只返回url的结尾:$_SERVER[\'REQUEST_URI\']-> “/网址”
所以我把它添加到wordpress索引中。php和所有东西都可以工作#1:D:
$_SERVER[\'REQUEST_URI\'] = requesturl_format($_SERVER[\'HTTP_HOST\'], $_SERVER[\'REQUEST_URI\']);
function requesturl_format($m_host, $m_request){
$m_regex = sprintf(\'#(https?://)(%s)(/.*)#\', $m_host);
if(preg_match( $m_regex, $m_request, $matches)){
if(count($matches) == 4){
$m_host = ($matches[1]);
$m_domain = ($matches[2]);
$m_url_req = ($matches[3]);
return $m_url_req;
}
}
return $m_request;
}