最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

htaccess - Clone WordPress for testing on localhost (with Fiddler)

programmeradmin0浏览0评论

My local setup for WordPress is at http://127.0.0.3/blog.

When calling /blog/wp-login.php, I get the page served; including Google CAPTCHA. But the login post to a 302 redirect to http://127.0.0.3/blog.

In order to overwrite my server default domain I added locally this to my wp-config.php file:

define('WP_HOME','http://127.0.0.3/blog');
define('WP_SITEURL','http://127.0.0.3/blog');
define('FORCE_SSL_LOGIN',false);
define('FORCE_SSL_ADMIN',false);

In my Fiddler Web Debugger script I am using the following code to redirect my browser to go to my local setup:

if (oSession.HostnameIs("my.domain.name")){
    oSession.bypassGateway = true;
    if (oSession.HTTPMethodIs("CONNECT")){
        oSession["x-replywithtunnel"] = "FakeTunnel";
        return;
    }  
    oSession["x-overrideHost"] = "127.0.0.3";
    oSession.fullUrl = "http://127.0.0.3" + oSession.PathAndQuery;
}

How can I get WordPress returned page to be rewritten before it gets sent to the browser, so it changes all 127.0.0.3 to my.domain.name?

-- OR --

Is there a smarter way to go about all of this within WordPress?

I had a look at Change WordPress image URLs via filter because it is somewhat related, but could not figure it out.

My local setup for WordPress is at http://127.0.0.3/blog.

When calling https://my.domain.name/blog/wp-login.php, I get the page served; including Google CAPTCHA. But the login post to a 302 redirect to http://127.0.0.3/blog.

In order to overwrite my server default domain I added locally this to my wp-config.php file:

define('WP_HOME','http://127.0.0.3/blog');
define('WP_SITEURL','http://127.0.0.3/blog');
define('FORCE_SSL_LOGIN',false);
define('FORCE_SSL_ADMIN',false);

In my Fiddler Web Debugger script I am using the following code to redirect my browser to go to my local setup:

if (oSession.HostnameIs("my.domain.name")){
    oSession.bypassGateway = true;
    if (oSession.HTTPMethodIs("CONNECT")){
        oSession["x-replywithtunnel"] = "FakeTunnel";
        return;
    }  
    oSession["x-overrideHost"] = "127.0.0.3";
    oSession.fullUrl = "http://127.0.0.3" + oSession.PathAndQuery;
}

How can I get WordPress returned page to be rewritten before it gets sent to the browser, so it changes all 127.0.0.3 to my.domain.name?

-- OR --

Is there a smarter way to go about all of this within WordPress?

I had a look at Change WordPress image URLs via filter because it is somewhat related, but could not figure it out.

Share Improve this question edited Oct 5, 2020 at 18:14 MeSo2 asked Oct 1, 2020 at 23:48 MeSo2MeSo2 1115 bronze badges 4
  • Could you not tell WP its URL is my.domain.name then adjust your hosts file? WP doesn't need to know its IP is 127.0.0.3 – Tom J Nowell Commented Oct 7, 2020 at 16:24
  • @TomJNowell I have a multi site setup and did not want to set a my.domain.name URL in wp-config.php. – MeSo2 Commented Oct 7, 2020 at 16:51
  • you don't need to set the domain name in wp-config.php, I have multiple separate multisite installs running locally here, and WP is unaware of the IP it's serving from, and I don't set the URL in wp-config.php. I just set each site in a multisite to the desired domain and WP handles it fine. Settings the domain and site URLs in wp-config.php is unnecessary. The only thing I can forsee is that Fiddler doesn't know how to route the requests to WordPress but that's a Fiddler problem not a WP problem. TLDR: Just use real URLs in your WP installs – Tom J Nowell Commented Oct 7, 2020 at 16:57
  • @TomJNowell I tried all kind of combinations, and nothing really worked the way I wanted it to work. By using Fiddler as described in my answer WordPress finally loads. And if I want to dump the live database onto the local database I can just copy it over, no need to do anything more to get it back up. – MeSo2 Commented Oct 7, 2020 at 19:04
Add a comment  | 

1 Answer 1

Reset to default 0

I added this to Fiddler's script in %USER%\Documents\Fiddler2\Scripts\CustomRules.js under OnBeforeResponse and the response rewrite started working

 static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
        if (oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
            oSession.utilDecodeResponse();
            oSession.utilReplaceInResponse('127.0.0.3','my.domain.name');
            oSession.utilReplaceInResponse('http:','https:');
        }
    }

and needed to set

// define('WP_HOME','http://127.0.0.3/blog');
// define('WP_SITEURL','http://127.0.0.3/blog');
define('FORCE_SSL_LOGIN',false);
define('FORCE_SSL_ADMIN',false);

in wp-config.php

In order to be able to log in I also had to remove the plugin simple-google-recaptcha. There might be a way to set it up with reCAPTCHA not needing to be deactivated, but for now this is all I need.

发布评论

评论列表(0)

  1. 暂无评论