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



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

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

我需要从这个large中获取两个参数,并36并创建一个这样的 url:

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。我正在使用网址格式作为路径BTW。

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

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/ .

最新更新