在一個完全不同的方向,我公司開發的東西,而回了類似的目的,使用一些非常簡單的Javascript/jQuery代碼做內部URL的動態修改
。
您可以將Javascript放在一個靜態的.js文件中,然後從CDN中包含jQuery幷包含來自公共目錄的Javascript代碼。假設您調用文件「鏈接rewriter.js」,你會使用它,像這樣從.html文件:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript" src="/public/javascript/link-rewriter.js"></script>
的鏈接重寫代碼如下所示:
jQuery(document).ready(function() {
var parser = document.createElement('a');
parser.href = '/';
var domain = parser.protocol + '//' + parser.host;
var regexp = new RegExp('^' + escapeRegExp(domain), 'i');
$('a[href^="http://"],a[href^="https://"],a[href^="//"]]').each(function(index, link) {
var href = link['href'].replace(regexp, '');
if ((!/^\//.test(href)) && (!/\.html$/i.test(href)) {
link['href'] = link['href'] + '.html';
}
});
});
爲了定義域,這個代碼首先創建一個原型鏈接(錨點)元素,用於查詢頁面的協議和主機。
然後,每次HTTP,HTTPS,和相對的本地鏈接元素進行處理,以查看是否需要被重寫。處理代碼首先將網頁的網域去掉,然後留下針對另一個網域(或協議)或該網域的鏈接。這個域的鏈接被進一步處理,以查看哪些鏈接缺少.html擴展名,並且那些自動添加.html擴展名的鏈接。
有利的一面,以這種方式:
- 簡單地添加到標籤頁將就地升級的鏈接
- 是極快的,因此用戶不會注意到它的發生,甚至上千( !!)的頁面上的鏈接
- 只爲同一個域中的鏈接被修改,甚至是特定的鏈接羣體可能成爲攻擊目標
這種方法的缺點:
- 的用戶必須在他們的瀏覽器的JavaScript(真的,誰不,這些天?)
- 這是代碼,因此它可能最終需要維護或增強功能
讓我們瞭解您到目前爲止試過。 –
我加我迄今爲止嘗試過... – geierwally
嘗試['^((?:?!?(\(?: HTML | JS | CSS | PNG)\/$))*)$ $ 1.HTML [L]'](https://regex101.com/r/fE9sR9/1) –