亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > ThinkPHP > 正文

thinkphp5 URL和路由的功能詳解與實例

2024-09-09 15:20:22
字體:
供稿:網(wǎng)友

前面的話:本文將詳細介紹thinkphp5URL和路由

URL訪問

ThinkPHP采用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口文件,系統(tǒng)會從URL參數(shù)中解析當前請求的模塊、控制器和操作,下面是一個標準的URL訪問格式:

http://domainName/index.php/模塊/控制器/操作

其中index.php就稱之為應用的入口文件(注意入口文件可以被隱藏,后面會提到)

模塊在ThinkPHP中的概念其實就是應用目錄下面的子目錄,而官方的規(guī)范是目錄名小寫,因此模塊全部采用小寫命名,無論URL是否開啟大小寫轉(zhuǎn)換,模塊名都會強制小寫

應用的index模塊的Index控制器定義如下:

  1. namespace app/index/controller; 
  2. class Index 
  3.   public function index() 
  4.   { 
  5.     return 'index'
  6.   } 
  7.   public function hello($name = 'World'
  8.   { 
  9.     return 'Hello,' . $name . '!'
  10.   } 

如果直接訪問入口文件的話,由于URL中沒有模塊、控制器和操作,因此系統(tǒng)會訪問默認模塊(index)下面的默認控制器(Index)的默認操作(index),因此下面的訪問是等效的:

http://tp5.com/index.php

http://tp5.com/index.php/index/index/index

如果要訪問控制器的hello方法,則需要使用完整的URL地址

http://tp5.com/index.php/index/index/hello/name/thinkphp

訪問URL地址后頁面輸出結果為:

Hello,thinkphp!

由于name參數(shù)為可選參數(shù),因此也可以使用

http://tp5.com/index.php/index/index/hello

訪問URL地址后頁面輸出結果為:

Hello,World!

默認情況下,URL地址中的控制器和操作名是不區(qū)分大小寫的,因此下面的訪問其實是等效的:

http://tp5.com/index.php/index/Index/Index

http://tp5.com/index.php/index/INDEX/INDEX

如果控制器是駝峰的,例如定義一個HelloWorld控制器(application/index/controller/HelloWorld.php):

  1. namespace app/index/controller; 
  2. class HelloWorld 
  3.   public function index($name = 'World'
  4.   { 
  5.     return 'Hello,' . $name . '!'
  6.   } 

正確的URL訪問地址(該地址可以使用url方法生成)應該是

http://tp5.com/index.php/index/hello_world/index

系統(tǒng)會自動定位到HelloWorld控制器類去操作

如果使用

http://tp5.com/index.php/index/HelloWorld/index

將會報錯,并提示Helloworld控制器類不存在

如果希望嚴格區(qū)分大小寫訪問(這樣就可以支持駝峰法進行控制器訪問),可以在應用配置文件中設置:

// 關閉URL自動轉(zhuǎn)換(支持駝峰訪問控制器)

'url_convert' => false,

關閉URL自動轉(zhuǎn)換之后,必須使用下面的URL地址訪問(控制器名稱必須嚴格使用控制器類的名稱,不包含控制器后綴):

http://tp5.com/index.php/index/Index/index

http://tp5.com/index.php/index/HelloWorld/index

如果服務器環(huán)境不支持pathinfo方式的URL訪問,可以使用兼容方式,例如:

http://tp5.com/index.php?s=/index/Index/index

其中變量s的名稱的可以配置的

5.0不再支持普通的URL訪問方式,所以下面的訪問是無效的,你會發(fā)現(xiàn)無論輸入什么,訪問的都是默認的控制器和操作

http://tp5.com/index.php?m=index&c=Index&a=hello

參數(shù)傳入

通過操作方法的參數(shù)綁定功能,可以實現(xiàn)自動獲取URL的參數(shù),仍然以上面的控制器為例,控制器代碼如下:

  1. namespace app/index/controller; 
  2. class Index 
  3.   public function index() 
  4.   { 
  5.     return 'index'
  6.   } 
  7.   public function hello($name = 'World'
  8.   { 
  9.     return 'Hello,' . $name . '!'
  10.   } 

當我們訪問

http://tp5.com/index.php/index/index/hello

就是訪問appindexcontrollerIndex控制器類的hello方法,因為沒有傳入任何參數(shù),name參數(shù)就使用默認值World。如果傳入name參數(shù),則使用:

http://tp5.com/index.php/index/index/hello/name/thinkphp

頁面輸出結果為:

Hello,thinkphp!

現(xiàn)在給hello方法增加第二個參數(shù):

  1. public function hello($name = 'World'$city = ''
  2.   { 
  3.     return 'Hello,' . $name . '! You come from ' . $city . '.'
  4.   } 

訪問地址為http://tp5.com/index.php/index/index/hello/name/thinkphp/city/shanghai

頁面輸出結果為:

Hello,thinkphp! You come from shanghai.

可以看到,hello方法會自動獲取URL地址中的同名參數(shù)值作為方法的參數(shù)值,而且這個參數(shù)的傳入順序不受URL參數(shù)順序的影響,例如下面的URL地址輸出的結果和上面是一樣的:

http://tp5.com/index.php/index/index/hello/city/shanghai/name/thinkphp

或者使用http://tp5.com/index.php/index/index/hello?city=shanghai&name=thinkphp

還可以進一步對URL地址做簡化,前提就是我們必須明確參數(shù)的順序代表的變量,我們更改下URL參數(shù)的獲取方式,把應用配置文件中的url_param_type參數(shù)的值修改如下:

// 按照參數(shù)順序獲取

'url_param_type' => 1,

現(xiàn)在,URL的參數(shù)傳值方式就變成了嚴格按照操作方法的變量定義順序來傳值了,也就是說我們必須使用下面的URL地址訪問才能正確傳入name和city參數(shù)到hello方法:http://tp5.com/index.php/index/index/hello/thinkphp/shanghai

頁面輸出結果為:

Hello,thinkphp! You come from shanghai.

如果改變參數(shù)順序為http://tp5.com/index.php/index/index/hello/shanghai/thinkphp

頁面輸出結果為:

Hello,shanghai! You come from thinkphp.

顯然不是我們預期的結果。

同樣,我們試圖通過http://tp5.com/index.php/index/index/hello/name/thinkphp/city/shanghai

訪問也不會得到正確的結果

[注意]按順序綁定參數(shù)的話,操作方法的參數(shù)只能使用URL pathinfo變量,而不能使用get或者post變量

隱藏入口

可以去掉URL地址里面的入口文件index.php,但是需要額外配置WEB服務器的重寫規(guī)則。

以Apache為例,需要在入口文件的同級添加.htaccess文件(官方默認自帶了該文件),內(nèi)容如下:

  1. <IfModule mod_rewrite.c> 
  2. Options +FollowSymlinks -Multiviews 
  3. RewriteEngine on 
  4. RewriteCond %{REQUEST_FILENAME} !-d 
  5. RewriteCond %{REQUEST_FILENAME} !-f 
  6. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 
  7. </IfModule> 

如果用的phpstudy,規(guī)則如下:

  1. <IfModule mod_rewrite.c>  
  2. Options +FollowSymlinks -Multiviews  
  3. RewriteEngine on  
  4. RewriteCond %{REQUEST_FILENAME} !-d  
  5. RewriteCond %{REQUEST_FILENAME} !-f  
  6. RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]  
  7. </IfModule> 

接下來就可以使用下面的URL地址訪問了

http://tp5.com/index/index/index

http://tp5.com/index/index/hello

如果使用的apache版本使用上面的方式無法正常隱藏index.php,可以嘗試使用下面的方式配置.htaccess文件:

  1. <IfModule mod_rewrite.c> 
  2. Options +FollowSymlinks -Multiviews 
  3. RewriteEngine on 
  4. RewriteCond %{REQUEST_FILENAME} !-d 
  5. RewriteCond %{REQUEST_FILENAME} !-f 
  6. RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] 
  7. </IfModule> 

如果是Nginx環(huán)境的話,可以在Nginx.conf中添加:

  1. location / { // …..省略部分代碼 
  2.   if (!-e $request_filename) { 
  3.     rewrite ^(.*)$ /index.php?s=/$1 last; 
  4.     break
  5.   } 

定義路由:

URL地址里面的index模塊怎么才能省略呢,默認的URL地址顯得有點長,下面就來說說如何通過路由簡化URL訪問。

我們在路由定義文件(application/route.php)里面添加一些路由規(guī)則,如下:

  1. return [ 
  2.   // 添加路由規(guī)則 路由到 index控制器的hello操作方法 
  3.   'hello/:name' => 'index/index/hello'
  4. ]; 

該路由規(guī)則表示所有hello開頭的并且?guī)?shù)的訪問都會路由到index控制器的hello操作方法。

路由之前的URL訪問地址為:http://tp5.com/index/index/hello/name/thinkphp

定義路由后就只能訪問下面的URL地址http://tp5.com/hello/thinkphp

[注意]定義路由規(guī)則后,原來的URL地址將會失效,變成非法請求。

但這里有一個小問題,如果我們只是訪問http://tp5.com/hello

將發(fā)生錯誤

事實上這是由于路由沒有正確匹配到,我們修改路由規(guī)則如下:

  1. return [ 
  2.   // 路由參數(shù)name為可選 
  3.   'hello/[:name]' => 'index/hello'
  4. ]; 

使用[]把路由規(guī)則中的變量包起來,就表示該變量為可選,接下來就可以正常訪問了http://tp5.com/hello

當name參數(shù)沒有傳入值的時候,hello方法的name參數(shù)有默認值World,所以輸出的內(nèi)容為 Hello,World!

除了路由配置文件中定義之外,還可以采用動態(tài)定義路由規(guī)則的方式定義,例如在路由配置文件(application/route.php)的開頭直接添加下面的方法:

use think/Route;

Route::rule('hello/:name', 'index/hello');

完成的效果和使用配置方式定義是一樣的。

無論是配置方式還是通過Route類的方法定義路由,都統(tǒng)一放到路由配置文件application/route.php文件中

[注意]路由配置不支持在模塊配置文件中設置

【完整匹配】

前面定義的路由是只要以hello開頭就能進行匹配,如果需要完整匹配,可以使用下面的定義:

  1. return [ 
  2.   // 路由參數(shù)name為可選 
  3.   'hello/[:name]$' => 'index/hello'
  4. ]; 

當路由規(guī)則以$結尾的時候就表示當前路由規(guī)則需要完整匹配。

當我們訪問下面的URL地址的時候:

http://tp5.com/hello // 正確匹配

http://tp5.com/hello/thinkphp // 正確匹配

http://tp5.com/hello/thinkphp/val/value // 不會匹配

【閉包定義】

還支持通過定義閉包為某些特殊的場景定義路由規(guī)則,例如:

  1. return [ 
  2.   // 定義閉包 
  3.   'hello/[:name]' => function ($name) { 
  4.     return 'Hello,' . $name . '!'
  5.   }, 
  6. ]; 

或者

  1. use think/Route; 
  2. Route::rule('hello/:name'function ($name) { 
  3.   return 'Hello,' . $name . '!'
  4. }); 

[注意]閉包函數(shù)的參數(shù)就是路由規(guī)則中定義的變量

因此,當訪問下面的URL地址:http://tp5.com/hello/thinkphp

會輸出

Hello,thinkphp!

【設置URL分隔符】

如果需要改變URL地址中的pathinfo參數(shù)分隔符,只需要在應用配置文件(application/config.php)中設置:

// 設置pathinfo分隔符

'pathinfo_depr'     => '-',

路由規(guī)則定義無需做任何改變,我們就可以訪問下面的地址:http://tp5.com/hello-thinkphp

【路由參數(shù)】

還可以約束路由規(guī)則的請求類型或者URL后綴之類的條件,例如:

  1. return [ 
  2.   // 定義路由的請求類型和后綴 
  3.   'hello/[:name]' => ['index/hello', ['method' => 'get''ext' => 'html']], 
  4. ]; 

上面定義的路由規(guī)則限制了必須是get請求,而且后綴必須是html的,所以下面的訪問地址:

http://tp5.com/hello // 無效

http://tp5.com/hello.html // 有效

http://tp5.com/hello/thinkphp // 無效

http://tp5.com/hello/thinkphp.html // 有效

【變量規(guī)則】

接下來,嘗試一些復雜的路由規(guī)則定義滿足不同的路由變量。在此之前,首先增加一個控制器類如下:

  1. <?php 
  2. namespace app/index/controller; 
  3. class Blog 
  4.   public function get($id
  5.   { 
  6.     return '查看id=' . $id . '的內(nèi)容'
  7.   } 
  8.   public function read($name
  9.   { 
  10.     return '查看name=' . $name . '的內(nèi)容'
  11.   } 
  12.   public function archive($year$month
  13.   { 
  14.     return '查看' . $year . '/' . $month . '的歸檔內(nèi)容'
  15.   } 

添加如下路由規(guī)則:

  1. return [ 
  2.   'blog/:year/:month' => ['blog/archive', ['method' => 'get'], ['year' => '/d{4}''month' => '/d{2}']], 
  3.   'blog/:id'     => ['blog/get', ['method' => 'get'], ['id' => '/d+']], 
  4.   'blog/:name'    => ['blog/read', ['method' => 'get'], ['name' => '/w+']], 
  5. ]; 

在上面的路由規(guī)則中,我們對變量進行的規(guī)則約束,變量規(guī)則使用正則表達式進行定義。

我們看下幾種URL訪問的情況

  1. // 訪問id為5的內(nèi)容 
  2. http://tp5.com/blog/5  
  3. // 訪問name為thinkphp的內(nèi)容 
  4. http://tp5.com/blog/thinkphp  
  5. // 訪問2015年5月的歸檔內(nèi)容 
  6. http://tp5.com/blog/2015/05 

【路由分組】

上面的三個路由規(guī)則由于都是blog打頭,所以我們可以做如下的簡化:

  1. return [ 
  2.   '[blog]' => [ 
  3.     ':year/:month' => ['blog/archive', ['method' => 'get'], ['year' => '/d{4}''month' => '/d{2}']],   
  4.     ':id'     => ['blog/get', ['method' => 'get'], ['id' => '/d+']], 
  5.     ':name'    => ['blog/read', ['method' => 'get'], ['name' => '/w+']], 
  6.   ], 
  7. ]; 

對于這種定義方式,我們稱之為路由分組,路由分組一定程度上可以提高路由檢測的效率

【復雜路由】

有時候,還需要對URL做一些特殊的定制,例如如果要同時支持下面的訪問地址

http://tp5.com/blog/thinkphp

http://tp5.com/blog-2015-05

我們只要稍微改變路由定義規(guī)則即可:

  1. return [ 
  2.   'blog/:id'      => ['blog/get', ['method' => 'get'], ['id' => '/d+']], 
  3.   'blog/:name'     => ['blog/read', ['method' => 'get'], ['name' => '/w+']], 
  4.   'blog-<year>-<month>' => ['blog/archive', ['method' => 'get'], ['year' => '/d{4}''month' => '/d{2}']], 
  5. ]; 

對 blog-<year>-<month> 這樣的非正常規(guī)范,我們需要使用<變量名>這樣的變量定義方式,而不是 :變量名方式。

簡單起見,我們還可以把變量規(guī)則統(tǒng)一定義,例如:

  1. return [ 
  2.   // 全局變量規(guī)則定義 
  3.   '__pattern__'     => [ 
  4.     'name' => '/w+'
  5.     'id'  => '/d+'
  6.     'year' => '/d{4}'
  7.     'month' => '/d{2}'
  8.   ], 
  9.   // 路由規(guī)則定義 
  10.   'blog/:id'      => 'blog/get'
  11.   'blog/:name'     => 'blog/read'
  12.   'blog-<year>-<month>' => 'blog/archive'
  13. ]; 

在__pattern__中定義的變量規(guī)則我們稱之為全局變量規(guī)則,在路由規(guī)則里面定義的變量規(guī)則我們稱之為局部變量規(guī)則,如果一個變量同時定義了全局規(guī)則和局部規(guī)則的話,當前的局部規(guī)則會覆蓋全局規(guī)則的,例如:

  1. return [ 
  2.   // 全局變量規(guī)則 
  3.   '__pattern__'     => [ 
  4.     'name' => '/w+'
  5.     'id'  => '/d+'
  6.     'year' => '/d{4}'
  7.     'month' => '/d{2}'
  8.   ], 
  9.  
  10.   'blog/:id'      => 'blog/get'
  11.   // 定義了局部變量規(guī)則 
  12.   'blog/:name'     => ['blog/read', ['method' => 'get'], ['name' => '/w{5,}']], 
  13.   'blog-<year>-<month>' => 'blog/archive'
  14. ]; 

URL生成

定義路由規(guī)則之后,可以通過Url類來方便的生成實際的URL地址(路由地址),針對上面的路由規(guī)則,我們可以用下面的方式生成URL地址。

  1. // 輸出 blog/thinkphp 
  2. Url::build('blog/read''name=thinkphp'); 
  3. Url::build('blog/read', ['name' => 'thinkphp']); 
  4. // 輸出 blog/5 
  5. Url::build('blog/get''id=5'); 
  6. Url::build('blog/get', ['id' => 5]); 
  7. // 輸出 blog/2015/05 
  8. Url::build('blog/archive''year=2015&month=05'); 
  9. Url::build('blog/archive', ['year' => '2015''month' => '05']); 

[注意]build方法的第一個參數(shù)使用路由定義中的完整路由地址

還可以使用系統(tǒng)提供的助手函數(shù)url來簡化

url('blog/read', 'name=thinkphp');

// 等效于

Url::build('blog/read', 'name=thinkphp');

通常在模板文件中輸出的話,可以使用助手函數(shù),例如:

{:url('blog/read', 'name=thinkphp')}

如果我們的路由規(guī)則發(fā)生調(diào)整,生成的URL地址會自動變化

如果你配置了url_html_suffix參數(shù)的話,生成的URL地址會帶上后綴,例如:

'url_html_suffix'  => 'html',

那么生成的URL地址 類似

blog/thinkphp.html

blog/2015/05.html

如果你的URL地址全部采用路由方式定義,也可以直接使用路由規(guī)則來定義URL生成,例如:

url('/blog/thinkphp');

Url::build('/blog/8');

Url::build('/blog/archive/2015/05');

生成方法的第一個參數(shù)一定要和路由定義的路由地址保持一致,如果你的路由地址比較特殊,例如使用閉包定義的話,則需要手動給路由指定標識,例如:

  1. // 添加hello路由標識 
  2. Route::rule(['hello','hello/:name'], function($name){ 
  3.   return 'Hello,'.$name
  4. }); 
  5. // 根據(jù)路由標識快速生成URL 
  6. Url::build('hello''name=thinkphp'); 
  7. // 或者使用 
  8. Url::build('hello', ['name' => 'thinkphp']); 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

久久婷婷中文字幕| 天堂在线资源网| 毛片网站在线看| 欧美一二三四区在线| 91精品啪在线观看国产81旧版| 波多野结衣人妻| 97在线看免费观看视频在线观看| 欧美白人最猛性xxxxx| 久久精品视频日本| 国产成人综合在线| 亚洲成人动漫精品| 在线日韩影院| 国产精品视频中文字幕91| 福利地址发布页| av资源在线看片| 老司机免费视频久久| 国产又粗又黄视频| 亚洲成人一品| 欧美疯狂xxxx大交乱88av| 国内成人精品视频| 欧美mv日韩mv亚洲| 亚洲中文字幕无码av永久| 国产成人亚洲精品播放器下载| www.久久久久久.com| 五月精品视频| 亚洲综合一区二区精品导航| 久久精品a一级国产免视看成人| 日本一区二区三区四区在线视频| 黄毛片在线观看| 欧美精品第三页| 91精品综合久久| 天天干夜夜艹| 中文字幕人成高视频| 国产伦视频一区二区三区| 日韩五码在线观看| 日本免费在线播放| 国产精品久久久久久一区二区| 三级全黄的视频在线观看| 伊人青青综合网| 奇米影音第四色| 蜜臀99久久精品久久久久小说| 就去色蜜桃综合| 操人视频欧美| 久久精品无码一区二区日韩av| 日本福利片在线观看| 久久国产精品免费一区二区三区| av电影一区二区三区| 国产精品v欧美精品v日本精品动漫| 无码人妻黑人中文字幕| 国产精品三级久久久久三级| 免费亚洲网站| 激情国产一区| 伊人发布在线| 手机亚洲手机国产手机日韩| 精品国产va久久久久久久| 欧美成人免费视频| 欧美xxxx18| 国产精品一区视频网站| 欧美一区二区在线观看视频| 黄色av免费播放| 国产精品女同互慰在线看| 91视频在线视频| 综合久久久久久久| 四虎成人永久免费视频| 日韩一区二区视频| 日韩成人在线电影网| 在线观看国产成人av片| 视频二区在线| 黄色一级片网址| 亚洲色图在线视频| 成人中文字幕在线播放| 免费在线黄色av| 国产激情视频网址| 97人人模人人爽视频一区二区| 狠狠干 狠狠操| 亚洲国产专区校园欧美| 日本人亚洲人jjzzjjz| 欧美诱惑福利视频| 久久99久久精品国产| 欧美日韩国产123| 日本特黄a级高清免费大片| 精品国产一区二区三区av性色| 亚洲影影院av| 国产精品av一区二区三区| 久久三级毛片| 日韩欧美精品在线视频| 免费不卡中文字幕视频| 18性欧美xxxⅹ性满足| 亚洲中文字幕无码爆乳av| 91夜夜蜜桃臀一区二区三区| 中文字幕123| 综合久久2019| 特级做a爱片免费69| 久久久噜噜噜久久久| 亚洲成人网在线观看| 国外av网站| 91免费黄视频| 欧美日韩福利电影| 中文字幕无码乱码人妻日韩精品| 最新电影电视剧在线观看免费观看| 亚洲欧美成人在线| 中文字幕色婷婷在线视频| www.久久成人| 一本一道久久a久久| 亚洲视频导航| 欧美激情在线一区二区三区| 成人在线手机视频| av在线播放网站| 国产在线视频网站| 在线观看网站黄不卡| 亚洲成a人片在线不卡一二三区| 91精品国产综合久久国产大片| 久久久免费高清视频| 国产精品美女诱惑| 精品国产视频在线| 九七电影韩国女主播在线观看| 中文字幕av一区 二区| 成年美女黄网站色大片不卡| 少妇高潮露脸国语对白| 800av在线播放| 免费观看日韩电影| 国产欧美日韩精品综合| 亚洲视频中文| 丁香五精品蜜臀久久久久99网站| 日韩美女在线观看一区| 国外成人在线视频| 色综合色综合色综合| 亚洲在线日韩| 国产av无码专区亚洲a∨毛片| 亚洲人成毛片在线播放女女| 91免费版网站入口| 国产欧美精品一区二区三区| 日韩电影天堂视频一区二区| 一区二区三区动漫| 国产午夜一区二区| 久久91亚洲人成电影网站| 最新亚洲国产| 婷婷免费在线观看| 欧美日韩国内| www.国产精品一二区| 日韩大片在线观看视频| 偷拍自拍亚洲| 国产亚洲欧美在线视频| аⅴ天堂中文在线网| 一本大道综合伊人精品热热| 91精品国产色综合久久不卡蜜臀| 亚洲福利在线看| 亚洲高清精品视频| 一区二区三区四区影院| 成人亚洲一区二区| 亚洲成av人片乱码色午夜| av高清在线| 粉嫩91精品久久久久久久99蜜桃| 日韩中文首页| 国产精品一区二区三区四区五区| 精品国产区一区| 欧美一卡2卡3卡4卡无卡免费观看水多多| 欧美精品第1页| 国产精品久久网| 黄色成人av| 久久久久无码国产精品不卡| 亚洲图片在线观看| 国内成人精品| 国产稀缺精品盗摄盗拍| 国家队第一季免费高清在线观看| 亚洲中无吗在线| 蜜桃无码一区二区三区| 欧美日韩一卡二卡三卡| 成人情趣视频| 一区二区三区视频在线看| 亚洲电影天堂av| 久久精品一区中文字幕| 午夜影院免费版| 黄色三级网站在线观看| 不卡av电影院| 久久久久国产精品午夜一区| 日夜干在线视频| 黄色网战入口| 国产又黄又爽又猛免费app| 91在线成人| 国产传媒欧美日韩成人| 成人在线观看你懂的| 97精品超碰一区二区三区| 色噜噜狠狠一区二区| 中文字幕在线播放网址| 日本中文字幕在线播放| 亚洲丝袜另类动漫二区| 亚洲字幕成人中文在线观看| 97av视频在线| 免费自拍视频| 日韩欧美二区| 国产成人一区二区在线观看| 成人污版视频| 国产av 一区二区三区| 精品视频在线免费观看| 欧美jizzhd欧美精品巨大| 鲁一鲁一鲁一鲁一澡| 欧美成人r级一区二区三区| 国产成人短视频| 国产午夜精品免费一区二区三区| 国产999精品久久久久久| 色综合久久久久综合一本到桃花网| 中文字幕乱码在线人视频| sihu成人| 国产一二三区在线视频| 国产精品永久免费观看| 国产一区二区三区免费| 91av国产在线| 天堂精品中文字幕在线| 欧美aaaaaaaaaaaa| 国产精品久久久久久久久免费高清| 色偷偷综合网| 日韩视频欧美视频| 成人免费视频a| 这里只有精品电影| 色婷婷亚洲十月十月色天| 免费一级片91| 丝袜视频国产在线播放| 性色88av老女人视频| 日韩国产亚洲欧美| 深夜福利视频在线免费观看| 五级黄高潮片90分钟视频| 91tv官网精品成人亚洲| 内射无码专区久久亚洲| 国产精品18久久久| 久久久久久亚洲精品中文字幕| 亚洲精品永久免费精品| 久久久这里只有精品视频| 亚洲欧美日韩精品永久在线| 有色激情视频免费在线| 国产一区二区在线视频播放| 国产精品三区在线观看| 中国特级黄色片| 亚洲2区在线| 999在线视频| 精品国产一区二区三区av性色| 亚洲日本国产| 3p在线观看| 色综合天天做天天爱| 精品久久久久久久人人人人传媒| 99国产精品久久久久老师| 久久精品视频91| 91av资源网| 天天夜碰日日摸日日澡性色av| 日本xxxxwww| 粉嫩av一区| 亚洲精选av| 亚洲国产一区二区视频| 国产午夜视频| 无码精品视频一区二区三区| 91成人免费看| 丝袜a∨在线一区二区三区不卡| 欧美日韩国产综合视频在线观看中文| 亚洲精品手机在线观看| 91成人在线免费| 国产精品初高中害羞小美女文| 国产夫妻在线视频| 99久久久久免费精品国产| 久久精品国产**网站演员| 亚洲美女久久| 精品久久毛片| 激情亚洲一区二区三区四区| 最近中文字幕mv在线一区二区三区四区| 小视频免费在线观看| 97在线免费| 精品一区二区三区自拍图片区| 伊人色综合影院| 宅男噜噜噜66一区二区| 九九热免费在线视频| 一区二区欧美在线| 美女网站视频在线观看| 欧美一区二区大胆人体摄影专业网站| av在线播放一区二区三区| 日本高清不卡码| 精品国产美女福利到在线不卡| 色综合久久av| 黑粗硬长欧美在线视频免费的| 激情中国色综合| 在线观看免费视频一区二区三区| 欧美交换国产一区内射| 久久影视中文粉嫩av| 婷婷福利视频导航| 亚洲精品乱码久久久久| 色视频在线观看免费| 97精品人妻一区二区三区香蕉| 中文字幕在线播放| 国产成人在线免费| zztt21.su黑料网站| 国产一区二区三区色淫影院| 538国产精品一区二区在线| 午夜精品免费在线| 黄色大片在线看| 国产乱淫a∨片免费视频| 好吊色在线观看| 国产一区私人高清影院| 欧美高清一区二区| 亚洲wwwwww| 欧美性感一区二区三区| 亚洲视频在线观看免费视频| 亚洲欧美激情另类校园| 少妇一级淫免费观看| 国产三级自拍视频| 色视频精品视频在线观看| 国产黄色成人av| 亚洲高清视频在线播放| 在线黄色免费网站| 99re在线| 亚洲第一综合| 欧美在线你懂的| 欧美爱爱视频网站| 超碰在线超碰在线| 日韩视频在线播放| 成人日韩在线电影| 成人影院中文字幕| 黄色亚洲在线| 久久男人资源视频| 8x海外华人永久免费日韩内陆视频| 99视频+国产日韩欧美| 一区二区三区视频在线免费观看| 日韩黄色片在线| 久久av免费观看| 亚洲毛片av| 久草综合在线| 欧美巨大另类极品videosbest| 日韩高清免费av| 天天躁日日躁狠狠躁免费麻豆| 91福利视频网| 日韩电影在线一区二区|