0

私は正規表現の経験がなく、ツールなどでいくつかのトリックを試しましたが、堅牢なソリューションは得られませんでした.

これが私が達成しようとしていることです。Incoming リクエストは次の形式になります。

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- などの位置は、同じ場所に表示される場合と表示されない場合があります。また、すべての要求にそれがあるわけではありません。

4

4 に答える 4

1
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']

も利用できます。

于 2012-12-26T10:24:47.857 に答える
0

これを.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'] でパス名を取得します。次に、リクエストの適切なファイルまたは機能をルーティングできます。

于 2012-12-26T11:00:56.473 に答える
0

ルート ディレクトリに 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 
于 2012-12-26T10:24:07.123 に答える