Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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
如何在不存储在浏览器中的情况下更改JavaScript中的URL';历史_Javascript_Wordpress_Url_Browser History - Fatal编程技术网

如何在不存储在浏览器中的情况下更改JavaScript中的URL';历史

如何在不存储在浏览器中的情况下更改JavaScript中的URL';历史,javascript,wordpress,url,browser-history,Javascript,Wordpress,Url,Browser History,我想在不影响浏览器历史记录的情况下更改javascript中的URL。 我有这个网址 http://abcd.com/parent/child/?id=xyz abc 这是WordPress的URL我想要这个 http://abcd.com/newurl/xyz ABC 我正在使用javascript中的history.replaceState函数来更改URL,但只要我在浏览器中单击后退按钮或刷新页面,它就会将我从当前页面重定向到主页 我想要的是,它应该存储原始URL(http://abcd.

我想在不影响浏览器历史记录的情况下更改javascript中的URL。 我有这个网址

http://abcd.com/parent/child/?id=xyz abc
这是WordPress的URL我想要这个

http://abcd.com/newurl/xyz ABC


我正在使用javascript中的
history.replaceState
函数来更改URL,但只要我在浏览器中单击后退按钮或刷新页面,它就会将我从当前页面重定向到主页

我想要的是,它应该存储原始URL(
http://abcd.com/parent/child/?id=xyz abc
)并向用户显示此URL(
http://abcd.com/newurl/xyz ABC

我只想更改URL,而不是历史记录。 这是我的javascript代码

history.replaceState('', 'my title', 'http://abcd.com/newurl/<?php echo str_replace(" ","-",$_GET["id"]); ?>');
history.replaceState(''my title','http://abcd.com/newurl/');
$\u GET[“id”]
是stirng xyz ABC

这个怎么样

function changeUrl(title, url) {
    if (typeof (history.pushState) != "undefined") {
        var obj = {Page: title, Url: url};
        history.pushState(obj, obj.Page, obj.Url);
    }
}

我认为你走错了路。您应该使用自定义重写规则在WordPress中解决此问题,而不是在JavaScript中解决此问题

请在此处阅读更多信息:

详细解决方案:

例如,您需要url
http://example.com/india/?id=vip/
将成为
http://example.com/india/vip/

其中
india
page slug
id
是您的查询变量

将以下代码添加到
functions.php
文件中:

function add_query_vars($queryVars) {
    $queryVars[] = "id"; // represents the name of the string as shown in the URL
    return $queryVars;
}

// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($aRules) {
    $aNewRules = array('india/([^/]+)/?$' => 'index.php?pagename=india&id=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');
在代码中,比如说
page.php
可以使用如下变量

if(isset($wp_query->query_vars['id'])) {
    $testid = urldecode($wp_query->query_vars['id']);
}
echo $testid;

注意:更改上述内容后,请确保重置永久链接

它的工作很好,但每当我点击后退按钮,它只是显示旧的网址,但没有重定向我。但当我在浏览器中再次单击后退按钮时,它会将我重定向到主页。有没有办法更改URL。。。?我已经解决了这个问题一个星期了,但仍然面临着这个问题。我该怎么做?你能告诉我我是WordPress的新手吗?这就是我面临这个问题的原因。Text pagename是一个自定义页面,我使用GET['id']从数据库获取数据。如何转换我的URL文本请检查更新的答案。让我知道这是否解决了你的问题。我现在有了这个URL。我将你的代码粘贴到我的functions.php文件中,但它不起作用。我不知道为什么35; KiranDash你在那里。。?