.htaccess 自定义url路由

.htaccess 自定义url路由,.htaccess,url,yii,seo,routes,.htaccess,Url,Yii,Seo,Routes,我想在Yii框架中创建友好的URL 例如: mysitename.com/country/city/travelling-type 或 等等 问题是它混淆了参数。 所以我试着用下面的代码来解决它,但还不够好: 'urlManager' => array( 'urlFormat' => 'path', 'appendParams' => true, 'showScriptName' => false, 'us

我想在Yii框架中创建友好的URL

例如:

mysitename.com/country/city/travelling-type

等等

问题是它混淆了参数。 所以我试着用下面的代码来解决它,但还不够好:

'urlManager' => array(
        'urlFormat' => 'path',
        'appendParams' => true,
        'showScriptName' => false,
        'useStrictParsing' => FALSE,
        'rules' => array(
            '<country:\w+>/<city:\w+>/<travelling_type:\w+>/<accommodation:\w+>/<caftering:\w+>/<price_from:\d+/<price_to:\d+>' => 'Travels/list'
        ),
    ),
'urlManager'=>数组(
“urlFormat”=>“路径”,
“appendParams”=>true,
'showScriptName'=>false,
'useStrictParsing'=>FALSE,
'规则'=>数组(

“//这样做并不容易,因为Yii不知道这两个URL之间的区别:

mysitename.com/{city}/{price}
mysitename.com/{city}/{accommodation}
不过,您可以更改到该系统的路线:

'<param1:\w+>/<param2:\w+>/<param3:\w+>/<param4:\w+>/<param5:\w+>/<param6:\d+/<param7:\d+>' => 'Travels/list'
您的系统将根据国家、城市、旅游类型、住宿类型和餐饮类型的列表查询“param1”(=城市),以确定param1确实是一个城市。然后,它将继续使用param2来确定它定义了住宿

价格更容易识别,因为它们是不同的数据类型(在旅行搜索引擎中,整数可能已经足够好了),所以您可以通过简单地检查价格是否为整数(或类似值)来轻松识别价格。 为了区分price_和price_To,我建议你假设如果只有一个价格,它就是price_from;如果有两个价格,第一个是price_from,第二个是price_To。 如果只想将price_设置为,可以将price_从设置为0


我希望这涵盖了您想要做的事情。设置起来可能相当复杂,但这是您为这样的URL路由所付出的代价。

您的方法的问题是,您的参数仅由位置决定,因此实际上无法确定哪个参数是哪个。您可以使用命名参数代替。
'<param1:\w+>/<param2:\w+>/<param3:\w+>/<param4:\w+>/<param5:\w+>/<param6:\d+/<param7:\d+>' => 'Travels/list'
mysitename.com/{city}/{accommodation}