如何编辑URL的一部分并重新加载新页面

时间:2014-03-17 20:24:22

标签: javascript jquery html url frontpage

晚上全部。

这是我在这里发表的第一篇文章,所以我希望我能做到这一点。

我到处寻找(无论是在这个网站上还是其他地方),找到我遇到的问题的解决方案,但我找不到任何听起来像我的问题的东西,但我从逻辑上知道它应该是可行的!

我维护两个内部网站点 - 一个是英语,一个是威尔士语。它们是彼此的镜像,只有域名和站点名称发生变化:

实施例

  http://english-site/news/item/003/170314.htm
  http://welsh-site/newyddion/item/003/170314.htm

到目前为止,我只发现了这个:http://www.codingforums.com/javascript-programming/8523-how-do-i-switch-pages-automatically.html

这给了我一些希望,但我无法弄清楚如何将它应用到我的情况中。

所以,问题是这个 - 有没有办法编辑和重新加载超链接切换出来:

英语网站/消息/

为此:

welsh-site / newyddion /

但保持链接的其余部分相同,以便页面将加载威尔士语或英语等同于其自身。

我知道大多数现代CMS都可以自动执行此类操作...但我没有使用现代CMS ...我正在使用FrontPage ...我确信这是可能的但是无法找到任何地方同意我的意见!

提前为任何人提供的帮助干杯!

3 个答案:

答案 0 :(得分:0)

FrontPage很古老,你真的不应该使用它。

话虽这么说,这一点JS应该做你想做的事情:

window.location.href = "http://welsh-site/newyddion" + window.location.pathname.substring(window.location.pathname.indexOf('/', 1));

可以使用window.location.pathname访问当前页面的路径(域名后面的所有内容)。在{1}上使用indexOf('/', 1)给出了第一个/字符的字符串(从0开始)的位置(我们将1作为第二个参数传递,以便忽略起始斜杠)。然后我们使用substring来获取该角色的所有内容。

最后,我们将新网址设置为window.location.href,执行重定向。

您可以使用正则表达式执行此操作,但这也可以。

答案 1 :(得分:0)

我假设您的网页上有一个按钮/链接/选择事件,可以通过说出EnglishWelsh来触发您要投放的域名。鉴于这种情况,您可以进行如下所示的简单javascript替换:

if (selection === "blah blah"){
    domain = "http://domainA...";
} else {

    domain = "http://domainB...";
}


window.location.replace(domain);

reference

答案 2 :(得分:0)

我不建议使用javascript生成网址,而是使用rel =“alternative”和hreflang =“code”使用与2个字母语言代码对应的语言代码将每个网页链接到相应的翻译页面http://googlewebmastercentral.blogspot.mx/2010/09/unifying-content-under-multilingual.html中描述的标准 指示机器人页面是不同语言的相同内容。

如果你可以使用一些php或服务器端代码,你可以通过用你想要用当前url创建的新url替换url来非常轻松地创建链接引用。这是通过使用完全符合您的网址重写标准的模式来完成的,也就是说,如果您没有任何模式,最好的方法是每页设置每个链接网址。

假设您只需要将英文网站域名转换为威尔士网站和新闻路径段。根据{{​​3}},威尔士语2字母标准将是'cy'。

<?php
$lang['cy']['domain'] = 'welsh-site';
$lang['cy']['lang'] = 'Welsh';
$lang['cy']['news_slug'] = 'newyddion';
$lang['en']['domain'] = 'english-site';
$lang['en']['lang'] = 'English';
$lang['en']['news_slug'] = 'news';
$lang['default'] = 'en';

说明:

我们正在定义一系列语言,我们将设置我们需要翻译的任何内容。这是一个多维数组映射,它按第一维中的键定义每种语言,然后在第二维中转换每个段。在第二个dimansion中,我们将设置以_slug结尾的特殊键,它将成为要翻译的url的一部分。除了其他任何内容之外,这个数组可以保存在一个特殊的文件中,我们可以轻松地进行编辑,而无需修改核心代码。

定义初始语言设置后,现在需要代码来识别当前语言和路径:

<?php
include('lang.php'); //this is the file where the language array is defined
$path = $_SERVER['REQUEST_URI'];
$host = isset($_SERVER['HTTP_HOST']) ? substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], ':')) : $_SERVER['SERVER_NAME'];
foreach ($lang as $code => $l) {
    if ($l['domain'] == $host) {
        $current_lang = $code;
        break;
    }
}
if ( ! isset($current_lang)) { 
    $current_lang = $lang['default'];
}
$_ = $lang[$current_lang];
$segment_1 = reset(explode('/', trim($path, '/'));
foreach ($lang[$current_lang] as $section => $url_segment) {
    if ($segment_1 == $url_segment && substr($section, -5) == '_slug')
        $current_section = $section;
        break;
    }
}

说明:

此代码用作获取当前部分和语言的桥接代码。首先,我们获取主机(域名)和URL路径。在第一个循环中,我们匹配任何语言域以找到我们所使用的正确语言,然后在第二个循环中,我们尝试查找当前语言相关的当前部分。

现在使用已知信息编写链接的代码很少:

<head>
<?php foreach ($lang as $code => $l): ?><?php if ($code != $current_lang) : ?>
<?php $lang_path = isset($current_section) ? str_replace('/' . $_[$current_section] . '/', '/' . $l[$current_section] . '/', $path) : $path; ?>
<?php $lang_url = '//' . $l['domain'] . $lang_path; ?>
    <link rel="alternative" hreflang="<?php echo $code; ?>" href="<?php echo $lang_url; ?>">
<?php endif; ?><?php endforeach; ?>
</head>

说明:

我们正在添加链接,告诉机器人页面中的其他链接只是用不同语言对此页面的不同表示。我们还在hreflang属性(http://reference.sitepoint.com/html/lang-codes

中指定了lang代码

然后以完全相同的方式创建链接(在主体部分中):

<ul>
<?php foreach ($lang as $code => $l): ?>
<?php     if ($code != $current_lang) : ?>
<?php         $lang_path = isset($current_section) ? str_replace('/' . $_[$current_section] . '/', '/' . $l[$current_section] . '/', $path) : $path; ?>
<?php         $lang_url = '//' . $l['domain'] . $lang_path; ?>
    <li><a href="<?php echo $lang_url; ?>"><?php echo $l['lang']; ?></a></li>
<?php     else : ?>
    <li class="active"><?php echo $l['lang']; ?></li>
<?php     endif; ?>
<?php endforeach; ?>
</ul>

要使所有这些工作,您的服务器必须支持PHP扩展。我使用PHP代码,因为这是最常见的代码支持。

您还需要更改文件扩展名,从.html更改为.php才能生效。

希望它适合你。这可能不是你想要的,而是你真正需要的。