具有路径url格式时,Yii中的.htaccess正则表达式

时间:2012-06-19 13:14:36

标签: .htaccess yii regex

我正在尝试设置正则表达式以从url获取一些参数。这是一个网址示例:

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

我需要从这个large36中获取两个参数并制作一个这样的网址:

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作为路径BTW。

1 个答案:

答案 0 :(得分:1)

嗯......你的模式错了/坏。考虑您的示例网址

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/匹配。