第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

重寫任意數(shù)量的路徑段以查詢參數(shù)

重寫任意數(shù)量的路徑段以查詢參數(shù)

冉冉說(shuō) 2019-09-26 15:21:12
重寫任意數(shù)量的路徑段以查詢參數(shù)我有這個(gè).htaccess規(guī)則:RewriteRule viewshoplatest/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ /viewshoplatest.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&$13=$14&$15=$16它應(yīng)該映射這樣的URL:http://www.veepiz.com/viewshoplatest/start/10/end/10/filter/0/ownerid/0/sortby/date/sortdir/DESC/cat/0/scat/0/對(duì)此:http://www.veepiz.com/viewshoplatest.php?start=0&end=10&filter=0&ownerid=0&sortby=date&sortdir=DESC&cat=0&scat=0當(dāng)我單擊鏈接并打印$_GET變量時(shí),我得到以下信息:Array ( [start] => 10 [end] => 10 [filter] => 0 [ownerid] => 0 [sortby] => start0 [start1] => start2 [start3] => start4 [start5] => start6 )關(guān)于它表現(xiàn)不好的任何想法?好的,我已經(jīng)通過(guò)將規(guī)則重寫為RewriteRule viewshoplatest/start/(.*)/end/(.*)/filter/(.*)/ownerid/(.*)/sortby/(.*)/sortdir/(.*)/cat/(.*)/scat/(.*)/$ /viewshoplatest.php?start=$1&end=$2&filter=$3&ownerid=$4&sortby=$5&sortdir=$6&cat=$7&scat=$8
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先:.*如果可以更具體,則不應(yīng)該使用,例如在這種情況下[^/]+。因?yàn)槎鄠€(gè).*會(huì)導(dǎo)致巨大的回溯。所以:

RewriteRule ^viewshoplatest/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /viewshoplatest.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&$13=$14&$15=$16

您可以使用RegexBuddy之類的對(duì)象來(lái)查看這些正則表達(dá)式的處理方式不同。

但是由于mod_rewrite只允許引用前九個(gè)組(請(qǐng)參見Tim的答案),因此您可以使用迭代方法并一次處理一個(gè)參數(shù):

RewriteRule ^viewshoplatest/([^/]+)/([^/]+)/([^/]+/[^/]+/.*)$ /viewshoplatest/$3?$1=$2 [QSA,N]RewriteRule ^viewshoplatest/([^/]+)/([^/]+)/([^/]*)/?$ /viewshoplatest.php?$1=$2&$3 [QSA,L]

第一個(gè)規(guī)則將一次處理一個(gè)參數(shù)對(duì)(最后一個(gè)對(duì)除外),方法是將其附加到已存在的參數(shù)對(duì)(請(qǐng)參閱QSA標(biāo)志),然后在不增加內(nèi)部遞歸計(jì)數(shù)器的情況下重新啟動(dòng)重寫過(guò)程(請(qǐng)參閱N標(biāo)志)。然后第二條規(guī)則將重寫最后一個(gè)參數(shù)對(duì)(或僅名稱)并結(jié)束迭代。

但是由于使用N標(biāo)志可能會(huì)很危險(xiǎn),因?yàn)樗赡軐?dǎo)致無(wú)限遞歸,因此您也可以使用PHP解析請(qǐng)求的路徑:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);$segments = implode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));array_shift($segments); // remove path prefix "/viewshoplatest"for ($i=0, $n=count($segments); $i<$n; ) {
    $_GET[rawurldecode($segments[$i++])] = ($i < $n) ? rawurldecode($segments[$i++]) : null;}

現(xiàn)在,您只需要此規(guī)則即可將請(qǐng)求通過(guò):

RewriteRule ^viewshoplatest(/|$) /viewshoplatest.php [L]


查看完整回答
反對(duì) 回復(fù) 2019-09-26
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

只是為了擴(kuò)展發(fā)現(xiàn)的內(nèi)容,您只能定義九個(gè)組用作反向引用,這就是為什么最好將其重寫為腳本san-query字符串,并在有以下REQUEST_URI情況時(shí)檢查腳本的原因:大量數(shù)據(jù)需要解析。

文檔中

反向引用是形式為$ N(N = 0..9)的標(biāo)識(shí)符,它將由匹配的Pattern的第N組的內(nèi)容替換

$0是整個(gè)匹配的模式,為您提供其余的九個(gè)數(shù)字。任何更高的數(shù)字都將被視為反向引用,后跟一些文字?jǐn)?shù)字字符。


查看完整回答
反對(duì) 回復(fù) 2019-09-26
  • 2 回答
  • 0 關(guān)注
  • 505 瀏覽

相關(guān)問(wèn)題推薦

慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)