簡體   English   中英

如何編輯URL的一部分並重新加載新頁面

[英]How can I edit a portion of a URL and reload the new page

晚上都。

這是我在這里發表的第一篇文章,所以我希望我做對了。

我到處(無論在本網站還是在其他地方)都在尋找解決我遇到的問題的方法,但是我找不到聽起來像我的問題的任何東西,但是從邏輯上我知道這應該可行!

我維護着兩個Intranet站點-一個英語站點和一個威爾士站點。 它們是彼此的鏡像,只有域名和站點名稱更改:

  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

這給了我一些希望,但我無法解決如何將其應用於我的情況。

因此,問題是這樣的-是否有一種方法可以編輯並重新加載超鏈接,從而解決此問題:

英文網站/新聞/

為了這:

威爾士現場/ newyddion /

但是,保持鏈接的其余部分不變,這樣該頁面將以其自身的威爾士語或英語進行加載。

我知道大多數現代CMS都可以自動執行此類操作...但是我沒有使用現代CMS ...我正在使用FrontPage ...我確定這是可能的,但找不到與我意見相符的地方!

提前為任何人可以提供的幫助加油!

FrontPage是古老的,您真的不應該使用它。

話雖如此,這部分JS應該可以完成您想要的工作:

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

使用window.location.pathname可以訪問當前頁面的路徑(域名之后的所有路徑)。 在其上使用indexOf('/', 1)會給我們第一個/字符在字符串中的位置(從0開始)(我們將1作為第二個參數傳遞,以便忽略起始斜杠)。 然后,我們使用子字符串從該字符開始獲取所有內容。

最后,我們將新的URL設置為window.location.href ,它執行重定向。

您可能可以使用正則表達式來執行此操作,但是效果也一樣。

我假設您的頁面有一個button / link / select事件,該事件觸發您要說EnglishWelsh來服務的域。 在這種情況下,您可以執行如下所示的簡單javascript替換:

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

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


window.location.replace(domain);

參考

我不建議使用javascript生成網址,而是使用rel =“ alternative”和hreflang =“ code”並使用對應於2個字母的語言代碼標准的語言代碼將每個頁面上的鏈接鏈接到相應的翻譯頁面,如圖所示在http://googlewebmastercentral.blogspot.mx/2010/09/unifying-content-under-multilingual.html中 ,指示漫游器頁面使用不同的語言顯示相同的內容。

如果您可以使用一些php或服務器端代碼,則可以通過使用要在當前url之外嘗試創建的新url替換url來輕松創建鏈接引用。 這是通過使用與您的URL重寫條件完全匹配的模式來完成的,也就是說,如果您沒有任何模式,則最好將每個頁面的鏈接URL設置為單獨。

可以說,您只需要將英語站點的域名轉換為威爾士站點和新聞路徑段即可。 根據http://reference.sitepoint.com/html/lang-codes ,威爾士lang 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';

說明:

我們正在定義一系列語言,在其中我們可以設置需要翻譯的任何內容。 這是一個多維數組映射,它在第一個維度中按鍵定義每種語言,然后在第二個維度中按句段翻譯。 在第二維中,我們將設置以_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>

說明:

我們正在添加鏈接,這些鏈接將告訴bot您頁面中的其他鏈接只是該頁面在不同語言中的不同表示。 我們還在hreflang屬性中指定了lang代碼( http://googlewebmastercentral.blogspot.mx/2010/09/unifying-content-under-multilingual.html

然后,以完全相同的方式(在正文部分的某處)創建鏈接:

<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,這樣才能起作用。

希望對你有效。 這可能不是您想要的,而是您實際需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM