0

URLからいくつかのパラメーターを取得するために正規表現を設定しようとしています。ここに 1 つの URL の例を示します。

mydomain.com/files/images/versions/large/uploadedGal/1-36.png

これから 2 つのパラメーターを取得し、次のような URL を作成する必要がありlargeます36

mydomain.com/index.php?r=image/default/create&id=36&version=large

これは、htaccess の正規表現です。

Options -Indexes

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

# If the requested file or directory does not exist...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# ...and if the source URL points to an image, we redirect to the create image URL.
RewriteRule versions/([^/]+)/[^\-\d]*\-?(\d+)\.(gif|jpg|png)$ index.php?r=image/default/create&id=$2&version=$1 [L,R,QSA]

</IfModule>

これは機能しません...どこに問題があるのか​​ わかりません。パラメーターの書き込みが行われていないと思われ、エラー404が見つかりません。ところで、パスとして urlFormat を使用しています。

4

1 に答える 1

1

ええと...あなたのパターンは間違っている/悪いです。サンプルURLを検討する

files/images/versions/large/uploadedGal/1-36.png

そしてそれをどのように変換/書き直す必要があるか

index.php?r=image/default/create&id=36&version=large

これを試してみてください(間違いなく機能しますが、URLの例を1つしか提供していないため、さまざまなURLタイプに合わせて調整する必要がある場合があります)。

versions/([^/]+)/[^\-\d]*(?:\d+\-)?(\d+)\.(gif|jpg|png)$

またはこのように(実際には他の可能なURLに依存しますが、おそらくこれはあなたが最初に望んでいたものです)

versions/([^/]+)/[^\-]*\-?(\d+)\.(gif|jpg|png)$

現在のパターンは、この部分までしか一致しませんfiles/images/versions/large/uploadedGal/

于 2012-06-19T14:20:25.957 に答える