Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> Apache偽靜態時rewrite匹配參數超過10個的處理方法

Apache偽靜態時rewrite匹配參數超過10個的處理方法

日期:2017/2/8 10:11:04      編輯:關於服務器

我們知道,在偽靜態中 rewrite 只能定義到$9的,超過了便無效了,而實際使用中卻有需要9個以上參數的時候,那麼怎麼來解決呢?詳見下文分解。


RewriteRule反向引用 ,引用方法是:$N (0 <= N <= 9)引用當前(帶有若干RewriteRule指令的)RewriteCond中的與Pattern匹配的分組成分(圓括號!)。
RewriteCond反向引用 ,引用方法是:%N (1 <= N <= 9)引用當前若干RewriteCond條件中最後符合的條件中的分組成分(圓括號!)


授人以魚不如授人以漁,下面來給大家演示下實現的過程


首先你要有個環境,要支持偽靜態,然後測試。新建一個以1命名的web文件夾,並建立php文檔,命名為:index.php 文檔代碼如下:
<?PHP
echo $_GET['a'].'<br>';
echo $_GET['b'].'<br>';
echo $_GET['c'].'<br>';
echo $_GET['d'].'<br>';
echo $_GET['e'].'<br>';
echo $_GET['f'].'<br>';
echo $_GET['g'].'<br>';
echo $_GET['h'].'<br>';
echo $_GET['i'].'<br>';
echo $_GET['j'].'<br>';
echo $_GET['k'].'<br>';
echo $_GET['l'].'<br>';
echo $_GET['m'].'<br>';
echo $_GET['n'].'<br>';
?>
復制代碼
這個php來實現url傳遞參數,a-n,14個參數,超過了9個


接著來寫.htaccess文件
RewriteEngine On
RewriteRule ^a(.*)b(.*)c(.*)d(.*)e(.*)f(.*)g(.*)h(.*)$ $8&a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7 [C,NC]
RewriteRule ^(.*)i(.*)j(.*)k(.*)l(.*)m(.*)n(.*)$  index.php?$8&h=$1&i=$2&j=$3&k=$4&l=$5&m=$6&n=$7  [QSA,L,NC]


RewriteRule  ^index-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?).html$  $9&a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8  [C,NC]
RewriteRule ^(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)$ index.php?$7&i=$1&j=$2&k=$3&l=$4&m=$5&n=$6 [QSA,L,NC]
復制代碼
這裡我寫了兩種方式,來方便大家直接使用


1.http://127.0.0.1/1/a1b2c3d4e5f6g7h8i9j10k11l12m13n14
2. http://127.0.0.1/1/index-1-2-3-4-5-6-7-8-9-10-11-12-13-14.html


如果你運行上面地址會出現1-14的數字則說明你的配置成功了

Copyright © Windows教程網 All Rights Reserved