我打算重定向这个网址:
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®ion=full&size=400,300&rotation=0&quality=default&format=jpg
我把重写规则写成:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /iiif/http/
RewriteRule image-service/(.*)/(.*)/(.*)/(.*)/(.*).(.*)$ image.php?req=763648&id=$1®ion=$2&size=$3&rotation=$4&quality=$5&format=$6 [R=301,NC,L,P]
</IfModule>结果是:
Array
(
[req] => 763648
[id] => papyrus,1
[region] => full
[size] => 400,300
[rotation] => 0
[quality] => default.jp.
)而不是:
Array
(
[req] => 763648
[id] => papyrus,1
[region] => full
[size] => 400,300
[rotation] => 0
[quality] => default
[format] => jpg
)我怀疑这是由于存在一个周期/点(.)在地窖里。我怎样才能改正呢?
发布于 2022-10-31 19:38:23
您需要转义文件扩展名之前的句点。
/(.*)/(.*)/(.*)/(.*)/(.*)\.(.*)注意最后两个\捕获组之间添加的反斜杠(.*)
发布于 2022-10-31 20:18:31
我建议您使用这样的重写规则:
RewriteEngine on
RewriteBase /iiif/http/
RewriteRule image-service/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/.]+)\.(.*)$ image.php?req=763648&id=$1®ion=$2&size=$3&rotation=$4&quality=$5&format=$6 [NC,L,QSA]分解:
anything
[^/]+,而不是贪婪的.*,后者可能与重写时的R=301和P标志相匹配,因为您只需要一个内部的最后一点来匹配扩展https://stackoverflow.com/questions/74268311
复制相似问题