您的位置:主页 > 网页模板 >

网页模板 ecshop/大商创B2B2C程序动态强制跳转伪静态改造(javascript版)

2019-11-01作者:纪涛博客来源:68up.com次阅读

思路1:使用$query_string进行301;

if ($query_string ~ "id=([0-9]+)") {
    set   $id   $1;
    rewrite ^/article.php$ /article-$id.html? permanent;
}

if ($query_string ~ "id=([0-9]+)") {
    set   $id   $1;
    rewrite ^/article_cat.php$ /article_cat-$id.html? permanent;
}

if ($query_string ~ "id=([0-9]+)") {
    set   $id   $1;
    rewrite ^/goods.php$ /goods-$id.html? permanent;
}

if ($query_string ~ "id=([0-9]+)") {
    set   $id   $1;
    rewrite ^/category.php$ /category-$id.html? permanent;
}

修改服务器上的/etc/nginx/site-available/vhost.conf文件;将上述代码放入

location ~ .php$ {代码后;

测试表明确实能将以下动态地址都跳转到静态地址;

/article.php?id=207   >   /article-207.html

/article_cat.php?id=1012   >   /article_cat-1012.html

/goods.php?id=1138   >   /goods-1138.html

/category.php?id=858   >   /category-858.html

但是这些静态地址本身就是伪静态;不是物理文件;所以跳转后页面一直循环;我们看到的就是无法打开的结果;

基于上述需求;我们先将刚刚改的规则注释掉;

改用javascript跳转实现;

article.dwt:

<link rel="canonical" href="https://www.test.com/article-{$article_id}.html">

    <script type="text/javascript">
        if (document.URL != 'https://www.test.com/article-{$article_id}.html' ){
            window.location.href='https://www.test.com/article-{$article_id}.html'+window.location.hash }
    </script>

 

article_cat.dwt:

<link rel="canonical" href="https://www.test.com/article_cat-{$cat_id}.html">

<script type="text/javascript">
        if (document.URL != 'https://www.test.com/article_cat-{$cat_id}.html' ){
            window.location.href='https://www.test.com/article_cat-{$cat_id}.html'+window.location.hash }
    </script>

 

goods.dwt:

<link rel="canonical" href="https://www.test.com/goods-{$goods_id}.html">​

<script type="text/javascript">
        if (document.URL != 'https://www.sdfaal.com/goods-{$goods_id}.html'){
            window.location.href='https://www.test.com/goods-{$goods_id}.html'+window.location.hash }
    </script>

 

category.dwt:

​<link rel="canonical" href="https://www.test.com/category-{$category}.html">

​<script type="text/javascript">
        if (document.URL != 'https://www.test.com/category-{$category}.html'){
            window.location.href='https://www.test.com/category-{$category}.html'+window.location.hash; }
    </script>

设置好之后,测试;能成功跳转;

出现了一个新增需求;就是tg=baidu-hexinci-chanpin1这种标签无法传递;

我们索性研究了一下javascript的URL传值参数;

window.location.href    (获取整个 URL)
window.location.protocol    (获取http或https协议头)
window.location.host    (获取域名)
window.location.port    (获取端口号)
window.location.pathname    (获取物理页面路径部分))
window.location.search    (获取?后的字符串)
window.location.hash    (获取#后面字符串)

.substr(1).match(变量名)
.split 字符串

参照:地址1  地址2

这时候上面代码中的​+window.location.hash即可取到#后的标识符

https://www.test.com/category.php?id=858#tg=baidu-hexinci-chanpin1

跳转之后

https://www.test.com/category-858.htmltg=baidu-hexinci-chanpin1

糟糕,页面不存在;

把+window.location.hash改成+?window.location.hash

跳转后就是

https://www.test.com/category-858.html?tg=baidu-hexinci-chanpin1

成功带标签动态跳转到静态;

附 ECSHOP/大商创B2B2C软件的增补伪静态规则;(本博客整理)

rewrite ^/account_safe.html$              /user.php?act=account_safe last;
rewrite ^/affiliate.html$              /user.php?act=affiliate last;
rewrite ^/order_list.html$              /user.php?act=order_list last;
rewrite ^/login.html$              /user.php last;
rewrite ^/register.html$              /user.php?act=register last;
rewrite ^/phone_login.html$              /user.php?act=phone_login last;
rewrite ^/get_password.html$              /user.php?act=get_password last;
rewrite ^/flow.html$              /flow.php last;
rewrite ^/favorites.html$              /user.php?act=collection_list last;
rewrite ^/message_list.html$              /user.php?act=message_list last;
rewrite ^/download.html$              /download.php last;

凡本站注明“本站”或“投稿”的所有文章,版权均属于纪涛博客或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。本站已授权使用的作品,应在授权范围内使用,并注明“来源:纪涛博客”并附上链接。违反上述声明者,本站将追究其相关法律责任。

编辑:68up.com 关键词:

网友评论

随机推荐

图文聚集

热门排行

最新文章

新浪微博 腾讯微博 RSS订阅