ownCloudの「URLリンクでの共有」のURLをmod_rewriteで書き換えようとしてハマる(現在進行系)

sid 使いの辛いところといえば、あるパッケージのアップデートをしたら、違うパッケージが動かなくなる、というのが時々あったりすることなんですが、最近それでハマったのが ownCloud 。
PHP7 系のパッケージが sid に取り込まれた関係で、sid 向けにパッケージングされてた ownCloud (7.0.x) が「7.0.x は PHP7 では動きません。8.x にしてね。」的なメッセージを表示するようになったんで、結局 ownCloud の公式サイトで提供されている 9.0.0 の deb パッケージをインストール。(そっちでもハマったんだけど、それは別の機会に。)

さて、本題は、その ownCloud で「URLリンクでの共有」したファイルの URL を書き換えたい、ということなのだけど、これが一筋縄ではいかないようで、うまく出来てません。

ownCloud 自体、 7.0 系と 9.0 系、操作や表示といった部分では大きく変わった印象はないのだけど、 「URLリンクで共有」しているファイルに割り振られる URL の表記が随分と変更されてます。

7.0 系:https://www.downtown.jp/owncloud/public.php?service=files&t=5f4fa827b45854ee60832266a4b9ab96
9.0 系:https://www.downtown.jp/owncloud/index.php/s/sTN4t4d6JxQ0670

ということで、この新旧の URL をApache の mod_rewite で URL 書き換えようと、以下のように設定。

AllowEncodedSlashes     On
RewriteEngine On
RewriteCond %{REQUEST_URI} /owncloud/public.php
RewriteCond %{QUERY_STRING} ^service=files&t=5f4fa827b45854ee60832266a4b9ab96$
RewriteRule ^.*$ /owncloud/index.php/s/sTN4t4d6JxQ0670 [R=301,L]

で、テストアクセスしてみると…。


nexus01:~# GET -dE "https://www.downtown.jp/owncloud/public.php?service=files&t=5f4fa827b45854ee60832266a4b9ab96"
GET https://www.downtown.jp/owncloud/public.php?service=files&t=5f4fa827b45854ee60832266a4b9ab96
User-Agent: lwp-request/6.15 libwww-perl/6.15

307 Temporary Redirect
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Upgrade, close
Date: Sat, 19 Mar 2016 01:59:06 GMT
Pragma: no-cache
Upgrade: h2c
Location: /owncloud/index.php/s/5f4fa827b45854ee60832266a4b9ab96
Server: Apache/2.4.18 (Debian)
Content-Length: 0
Content-Type: text/html; charset=UTF-8
<以下略>

Location: 見ると、public.php から index.php に変わっているので、一見新しいURLに正しく書き換えられているようにみえるのだけど、転送先に設定している "sTN4t4d6JxQ0670" の部分が、転送元の "t=5f4fa827b45854ee60832266a4b9ab96" の値に置き換えられてしまっているために、実際には "404 Not Found" となってしまうわけで…。
これでは、だめなわけですよ…。orz(HTTP レスポンスが 307 なのも、チョット。)

自分のブログい書いている「URL リンクでの共有」のリンクは、手動で書き換えればいいんですけど、 Twitter に流したのなんかは、あとから書き換えられないわけで…。
ぬ〜、もう少し悩んでみるか…。

トラックバック(0)

コメントする