0

我正在尝试设置正则表达式以从 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 not found。我使用 urlFormat 作为路径顺便说一句。

4

1 回答 1

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/

于 2012-06-19T14:20:25.957 回答