首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex .htaccess重写点/周期的url问题

Regex .htaccess重写点/周期的url问题
EN

Stack Overflow用户
提问于 2022-10-31 19:35:13
回答 2查看 20关注 0票数 1

我打算重定向这个网址:

http://localhost/iiif/http/image-service/papyrus,1/full/400,300/0/default.jpg

http://localhost/iiif/http/image.php?req=763648&id=papyrus,1&region=full&size=400,300&rotation=0&quality=default&format=jpg

我把重写规则写成:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /iiif/http/    
RewriteRule image-service/(.*)/(.*)/(.*)/(.*)/(.*).(.*)$ image.php?req=763648&id=$1&region=$2&size=$3&rotation=$4&quality=$5&format=$6 [R=301,NC,L,P]
</IfModule>

结果是:

代码语言:javascript
复制
Array
(
    [req] => 763648
    [id] => papyrus,1
    [region] => full
    [size] => 400,300
    [rotation] => 0
    [quality] => default.jp.
)

而不是:

代码语言:javascript
复制
Array
(
    [req] => 763648
    [id] => papyrus,1
    [region] => full
    [size] => 400,300
    [rotation] => 0
    [quality] => default
    [format] => jpg
)

我怀疑这是由于存在一个周期/点(.)在地窖里。我怎样才能改正呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-31 19:38:23

您需要转义文件扩展名之前的句点。

代码语言:javascript
复制
/(.*)/(.*)/(.*)/(.*)/(.*)\.(.*)

注意最后两个\捕获组之间添加的反斜杠(.*)

票数 1
EN

Stack Overflow用户

发布于 2022-10-31 20:18:31

我建议您使用这样的重写规则:

代码语言:javascript
复制
RewriteEngine on
RewriteBase /iiif/http/    
RewriteRule image-service/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/.]+)\.(.*)$ image.php?req=763648&id=$1&region=$2&size=$3&rotation=$4&quality=$5&format=$6 [NC,L,QSA]

分解:

anything

  • Removal

  • 否定字符类[^/]+,而不是贪婪的.*,后者可能与重写时的R=301P标志相匹配,因为您只需要一个内部的最后一点来匹配扩展
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74268311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档