Apache Rewrite解決問號匹配的寫法

2022-05-19 01:32:54 字數 2522 閱讀 2901

實現把使用者輸a位址跳到b位址,就是跳轉的功能。

原先用我用最常的方法實現如:rewriterule ^productview.jsp?lclassid=200$    goods.php?id=3 [l]

看上去是沒有問題的,但在位址上輸入跳轉不了。

後來網上查了一下資料如下:

規則:文字

. 任意乙個單字元

[chars] 字元類: "chars"中的任意乙個字元

[^chars] 字元類: 不在"chars"中的字元

text1|text2 選擇: text1 或 text2

量詞? 前面的字元出現 0 或 1 次

* 前面的字元出現 0 或 n 次(n > 0)

+ 前面的字元出現 1 或 n 次(n > 1

原來這樣:?號把前面的p也作為引數了,p?(\?)就變成了$1,當在位址中輸入 可實現跳轉,但這顯然不是需求那樣的.

本來都想放棄用重寫了,在網上又找了一下終於找到了,功夫不負有心人啊,

解決方法如下:

rewritecond % ^lclassid=200$

rewriterule ^productview\.jsp$ goods\.php\?id=3 [l]

我找到的相關資料:

把 /abc?id=123  =>  /def.php?id=123 的寫法:

rewriteengine on

rewritecond % ^id=(.+)$

rewriterule ^/abc$ /def.php?sid=%1 [l]

rewriterule 不會去匹配url中?(問號)後面的字串,需要用rewritecond來匹配

****************************************==

ps.上面整篇內容迷迷糊糊,這裡再附個說到點子上的例子出來:

rewriteengine on

rewritebase /

rewritecond % ^$

rewriterule ^(.*)$ index.php?path=$1 [l,ne]

rewritecond % !^$

rewriterule ^(.*)$ index.php?path=/$1\?% [l,ne]

這個例子用到兩個條件,即是有條件執行重寫,第一條件是當url沒有引數,即?問號後面沒有內容時,執行重寫並結束匹配;第二個條件反過來了,就是url的「?」號後面帶著引數,然後重寫時把問號後面的也傳遞過去(這裡是重點!)。

rewriteengine on

rewritecond % ^(.*)$

rewriterule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1

rewritecond % ^(.*)$

rewriterule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1

rewritecond % ^(.*)$

rewriterule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1

rewritecond % ^tid=([0-9]+)$

rewriterule ^read.php$ forum.php?mod=viewthread&tid=$1&extra=page%3d1&page=1

[qsa]

rewritecond % ^tid=([0-9]+)&page=([0-9]*)$

rewriterule ^read.php$ forum.php?mod=viewthread&tid=$1&extra=page%3d1&page=$2

[qsa]

rewritecond % ^(.*)$

rewriterule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3d$3&page=$2&%1

rewritecond % ^(.*)$

rewriterule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1

rewritecond % ^(.*)$

rewriterule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1

rewritecond % ^(.*)$

rewriterule ^blog-([0-9]+)-([0-9]+)\.html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1

rewritecond % ^(.*)$

rewriterule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1

Apache rewrite規則寫法

1 r code force redirect 強制外部重定向 強制在替代字串加上http thishost thisport 字首重定向到外部的url.如果code不指定,將用預設的302 http狀態碼。2 f force url to be forbidden 禁用url,返回403http狀...

Apache Rewrite 靜態配置

1 mod rewrite 簡介和配置 rewirte主要的功能就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等 如乙個普通訪問位址為 php100.php?id 2 可以轉成 php100 2.html 或轉成 php1...

Apache Rewrite 常用設定說明

例子 rewriteengine on 開啟引擎 rewriterule test.html test.php l rewriterule test.html?tianqi.php?s1 s2 s3 qsa,l 用於多個引數的情況 rewriterule tianqi 0 9 html tianqi...