我正在尝试设置正则表达式以从url获取一些参数。这是一个网址示例:
mydomain.com/files/images/versions/large/uploadedGal/1-36.png
我需要从这个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作为路径BTW。
答案 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/
匹配。