このスレッドは解決済です(未解決に戻す場合はこちら)
<<戻る

mod_rewrite 等のリダイレクトで このメッセージに返信する
日時: 2017/05/08(Mon) 02:18
名前: しょう
URL: http://parun.syou-neko.net/
mod_rewriteに関する問いです。

http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/
(こちらのページでも訪ねようとしましたがコメント欄がPOSTできなくなっているようです)


上記URLの説明のとおり、"ディレクトリ偽装"の方法で
PukiWiki 1.4.7の静的化ができたのですが、ある箇所のみうまくいっていないのです。

私の環境:CentOS6.9(自宅サーバー)+.htaccessは使用できるようにしています。
     pukiwiki1.4.7で起きている問題となります。


正確にいうと静的化自体はできているのですが、
http://host.example.com/?Front-Page のトップの箇所を私は日本語で、
http://host.example.com/日本語/ としているのですが、
静的化した後だと、http://example.com/ のトップに、
mod_rewriteや301リダイレクトでリダイレクトしないのです。
※実際にリダイレクトしない箇所は下記画像URLをご覧ください。

<赤枠の箇所のみリダイレクトできません>
http://ichigo.hp2.jp/upload/rewrite.png
現在はリダイレクト設定を外していますが下記の方法をためしました。


<リダイレクトを試した方法>
#1.
RewriteRule ^\xe3\x83\x91\xe3\x83\xab\xe3\x82\x8b\xe3\x82\x93\xe3\x81\xae\xe9\x83\xa8\xe5\xb1\x8b/$ http://host.example.com/ [R=301,L]
#2
Redirect 301 /パルるんの部屋/ http://host.example.com/ #ファイルはUTF-8Nで保存アップロード

1.2.だけでなく様々なことを試しましたがリダイレクトしません。
なお、現在のリダイレクト設定は下記のとおりで静的化の基本的な設定となります。

.htaccessの記述
#-------------------------------------------------------
<FilesMatch "\.(ini\.php|lng\.php|txt|gz|tgz|zip)$">
Order allow,deny
Deny from all
</FilesMatch>

RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?$1 [L]
#-------------------------------------------------------
※最後の ?$1 を消してみるというのもしましたが、
左メニューにアクセスできなくなる不具合が出るので解決にはなりません。

また最初のURLの下部で説明されている下記も正常動作しているので追加させています。
#-------------------------------------------------------
// cmdやpluginなしで?が含まれていたら (例:index.php?Linux)
if (
(
(strpos($_SERVER['REQUEST_URI'], 'cmd=') === FALSE) &&
(strpos($_SERVER['REQUEST_URI'], 'plugin=') === FALSE)
) && (strrpos($_SERVER['REQUEST_URI'], '?') !== FALSE)
) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: /' . anchor_replace($arg) . '/');
exit;
}
#-------------------------------------------------------

実際さまざまな検索をしましたが、画像URLの赤枠の箇所のみ
トップのURL(http://host.example.com/)にリンク設定する方法が分からないので、
.htaccessでリダイレクトしようとしてるわけです。

上記のことから以下をお尋ねします。

1.問題の箇所をトップのURLにする方法はないか
2.リダイレクトさせる場合はどうすればいいか

1.2.の方法いずれかで解決させたいと思います。
できればスマートな形であればと思います。


自宅サーバーで尋ねる人がいません。尋ねたが回答がかえってきません。
なにとぞ、お教えください。よろしくお願いいたします。

【追記】
HTTPレスポンスヘッダの確認をしたところ以下の結果でした。
 ステータス: HTTP/1.1 301 Moved Permanently
 Location : http://host.example.com/?パルるんの部屋

/パルるんの部屋/ としていたのが /?パルるんの部屋 に戻り、
ループしているのではないかと考えられますが解決法がわかりません。
記事編集 編集
Re: mod_rewrite 等のリダイレクトで このメッセージに返信する
日時: 2017/05/08(Mon) 22:12
名前: Q
URL:
まず初めに、
なにぶん10年ほどの前のことなのでまるで記憶がありませんので、
解決せずとも大目に見てください。
また、同様な理由で、すでにPukiwikiに対してさほど興味がなくなっているため、
あまりやり取りできないと思います。

さて、まず、2つの赤枠のうち、上の赤枠については、
同HTMLを出力している skin/pukiwiki.skin.php を見ればわかる通り、
plugins/topicpath.inc.php を利用して出力しているものです。
したがって同ファイルの62行目〜63行目を下記のようにすると、
手っ取り早いかと思います。

修正前
if (PLUGIN_TOPICPATH_TOP_DISPLAY)
$topic_path[] = make_pagelink($defaultpage, PLUGIN_TOPICPATH_TOP_LABEL);

修正後
if (PLUGIN_TOPICPATH_TOP_DISPLAY)
$topic_path[] = '<a href="/">Top</a>';


次に、2つの赤枠のうち、下の赤枠については、
.htaccessに下記のように書くと動作するような気がします
RewriteRule ^%A5%D1%A5%EB%A4%EB%A4%F3%A4%CE%C9%F4%B2%B0/$ / [R=301,L]

なお、%A5〜の部分は、"パルるんの部屋"をURLエンコードしたものです。

また、この解決方法のほかに、リダイレクトは諦め、
"パルるんの部屋"を「最新の〜」から消すという方向性もありかもしれません。

その場合の方法は、少なくとも次の2つあります。
1. FTPでアクセスし、"パルるんの部屋"に相当するファイル(おそらく wiki/A5D1A5EBA4EBA4F3A4CEC9F4B2B0.txt)の日付を2000年などにしてしまう。
2. 「最新の〜」を出力している plugins/recent.inc.php を修正し、表示されないようにする。

以上です。
記事編集 編集
Re: mod_rewrite 等のリダイレクトで このメッセージに返信する
日時: 2017/06/01(Thu) 18:39
名前: しょう
URL:
$topic_path[] = '<a href="/">Top</a>';
については合ってましたね。

下の赤枠については上手くいきませんでした。
pukiwiki.ini.php
399行目で、
$non_list = '^(\:.+|コメント\/.+|パルるんの部屋|Deleteリスト|.+\/SubMenu)$';
とすると上手くいきました。

ありがとうございました。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -