我打算重定向這個網址:
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
)
我懷疑這是由于網址中存在句點/點(。)。我該如何糾正?
uj5u.com熱心網友回復:
我建議你像這樣使用這個重寫規則:
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]
分解:
- 否定字符類而不是可能匹配任何東西
[^/]的貪婪.* - 從重寫中洗掉
R=301和P標記,因為您想要的只是內部重寫 - 轉義最后一個點以匹配擴展名
uj5u.com熱心網友回復:
您需要轉義檔案擴展名之前的句點
/(.*)/(.*)/(.*)/(.*)/(.*)\.(.*)
\注意最后兩個(.*)捕獲組之間添加的反斜杠
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525363.html
