簡體   English   中英

mod_rewrite正則表達式

[英]mod_rewrite regular expression

我沒有使用正則表達式的經驗,並嘗試了一些工具等技巧,但沒有得到可靠的解決方案。

這是我想要達到的目標。 以后的請求可以采用以下格式:

http://whatever.com/search/s-<value>/i-<i value>/e-<e value>?query=<query value>&query1=<query1 value>

http://whatever.com/list/s-<value>/i-<i value>/e-<e value>?query=<query value>&query1=<query1 value>

使用mod_rewrite我想將其轉換為-

http://whatever.com/index.php?type=search&iid=<i value>&edd=<e-value>&query=<query value>&query1=<query1 value>

http://whatever.com/index.php?type=list&iid=<i value>&edd=<e-value>&query=<query value>&query1=<query1 value>

注意:i-,e-等的位置可能會或可能不會出現在同一位置。 而且,並非所有請求都可以擁有它。

RewriteEngine On

RewriteRule ^([^/]*)$   index.php?type=$1 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)$   index.php?type=$1&$2id=$3 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)/(.)-([^/]*)$   index.php?type=$1&$2id=$3&$4id=$5 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)/(.)-([^/]*)/(.)-([^/]*)$   index.php?type=$1&$2id=$3&$4id=$5&$6id=$7 [L,QSA]

這里

 i-value is in $_GET['iid']
 s-value is in $_GET['sid']
 e-value is in $_GET['eid']

$_GET['query']
$_GET['query1']

也提供。

您可以通過將htaccess文件放在根目錄中來進行嘗試:

RewriteEngine on
RewirteRule ^search/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)?query=<query value>&query1=<query1 value> index.php?type=search$iid=$2&edd=$3&query={QUERY_STRING} 

您可以根據您的url參數在下面使用(我假設它可以同時為char和number):

1) [a-zA-Z0-9] for char + numbers
2) [a-zA-Z] for char
3) [0-9] for numbers 

.htaccess文件中嘗試

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

只需轉到您的index.php文件,然后打印$ _GET變量,即可在此處進行操作。

您將在$ _GET ['q']中獲得路徑名。 然后,您可以路由請求適當的文件或功能。

閱讀有關PCRE(與Perl兼容的正則表達式)的PHP文檔。

PCRE上的PHP文檔是網上最好的。 不要打擾使用工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM