如何更改JavaScript中的URL而不存储在浏览器的历史记录中

时间:2017-09-05 09:17:02

标签: javascript wordpress url browser-history

我想在javascript中更改网址,而不会影响浏览器的历史记录。 我在

中有这个网址
http://abcd.com/parent/child/?id=xyz abc

它是我想要的WordPress网址

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

我在javascript中使用history.replaceState函数来更改其工作正常的URL,但每当我从浏览器点击后退按钮或刷新页面时,它会将我从当前页面重定向到主页。

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

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

history.replaceState('', 'my title', 'http://abcd.com/newurl/<?php echo str_replace(" ","-",$_GET["id"]); ?>');

$_GET["id"]是一个激动人心的xyz ABC

2 个答案:

答案 0 :(得分:0)

这个怎么样?

<select class="form-control select form__blank">
  <option disabled selected value> - select - </option>
  <option>Full Furnished</option>
  <option>Semi Furnished</option>
  <option>UnFurnished</option>
</select>

答案 1 :(得分:0)

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

在这里阅读更多: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

详细解决方案:

例如,您希望网址http://example.com/india/?id=vip/http://example.com/india/vip/

其中indiapage slugid是您的查询变量。

将以下代码添加到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;

注意:请在更改上述内容后确保重置固定链接。