php创建友好的URL

时间:2016-02-21 09:19:19

标签: php jquery url routes

我有一个页面,其中包含我构建的一些调用webservice的链接。

这是jquery函数的摘录:

$.ajax({
    type: 'GET',
    dataType: 'json',
    url: 'json.php',

    success: function (response) {
        data = response.obj;
        var errorCode = response.errorCode;
        if (errorCode === 200) {
            $.each(data, function (key, value) {
                l_id_nation = value.id;

                var name = value.name;
                var continente = name.val;

                $('#sidemenu').append('<li><a class="id_continent"  href="javascript:void(0)">' + continente + '</a></li>');

            });

            $('.id_continent').click(function () {
                var id_continent = $(this).html();
            });
        }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    }
});

点击后,我打开一个显示一些信息的页面。 该网页的网址为/trip.php?id_trip=1234&continet=oceania

我想要一个像/trip/123/oceania

这样的网址

我正在考虑创建路径文件,但我不了解如何动态创建这个新网址。

2 个答案:

答案 0 :(得分:1)

如果我已正确解释(?),您希望将您收集的网址转换为&#34; webservice&#34;打电话并将它们转换为seo友好链接?

以下不是jQuery,但似乎解析数据并以您想要的格式返回url。

if( typeof( 'getPairs' )!='function' ){
    function getPairs(d,z) {
        var a = new Object();
        var pr = d.split(z);
        for( var i=0;i<pr.length;i++ ) {
                var p = pr[i].indexOf('=');
                if (p == -1) continue;
                var n = pr[i].substring(0,p);
                var v = pr[i].substring(p+1);
                a[n] = unescape(v);
        }
        return a;
    }
}
if( typeof( 'prepareurl' )!='function' ){
    function prepareurl(u){
        var p=u.split('?')[0].split('.')[0];
        var q=u.split('?')[1];
        var t=[p];
        var o=getPairs( q, '&' );
        for( k in o )t.push( o[k] );
        return t.join('/');
    }
}

alert( prepareurl( '/trip.php?id_trip=1234&continent=oceania' ) );

will return `/trip/1234/oceania`

答案 1 :(得分:0)

我不确定这与您的设置有多相关,但我建议使用一个很棒的微框架,Slim,这不仅有助于您的动态路线,还可以帮助您管理您的网络服务更容易。 设置Slim非常简单,请阅读以下文档:try here

使用Slim,您可以执行以下操作,您指向的网址,/ trip.php?id_trip = 1234&amp; conttinet = asia可以在此类路线中指定,

$app->get('/trip/{trip_id}/{continent}', function($request, $response, $args){
   $trip_d = $args['trip_id'];
   $continent = $args['continent']
   //Do something
});

简单的说,任何与上述路线匹配的GET请求都会命中这个控制器,你可以在这个方法中做你的东西,而且Slim还内置了对Twig模板系统的支持,这恰好是管理你的一个很好的资源。视图。

如果你想设置没有任何框架的动态路由,你必须在.htaccess文件中使用重写规则,你可以在这里找到一些有用的信息:http://www.slimframework.com/ 我建议使用微框架而不是重新发明整个事情,希望这会有所帮助。