フォーラムへの返信

15件の返信を表示中 - 1 - 15件目 (全20件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: 特定の条件下でのリダイレクトに関して
    トピック投稿者 alitomo

    (@airarimichi)

    @rocketmartue さん。おかげさまで私のやりたかったことが無事に出来ました。
    大変助かりました。@rocketmartue さん誠にありがとうございました。🙇

    フォーラム: 使い方全般
    返信が含まれるトピック: 特定の条件下でのリダイレクトに関して
    トピック投稿者 alitomo

    (@airarimichi)

    @rocketmartue さん色々とご享受頂きありがとうございます。
    ご連絡がおそくなり申し訳ありません。

    いただいたコードを試してみて結果をお伝えいたします。
    まず、

    function disable_canonical_for_nonexistent_posts( $redirect_url ) {
    // シングル投稿ページで、投稿が存在しない場合
    if ( is_singular('post') && ! have_posts() ) {
    return false; // canonicalリダイレクトをキャンセル
    }
    return $redirect_url;
    }
    add_filter( 'redirect_canonical', 'disable_canonical_for_nonexistent_posts' );

    上記コードですが、実行してみましたが、結果的には挙動は同じで、
    hoge.jp/news/12323/ を hoge.jp/hp_archive/news/12323/ へリダイレクトしたいが実際は hoge.jp/news/ が表示される。
    になりました。

    また.htaccess でのリダイレクトですが、

    <IfModule mod_rewrite.c>
    RewriteEngine On
    # /news/以下のリクエストで、実在するファイル・ディレクトリでなければリダイレクト
    RewriteCond %{REQUEST_URI} ^/news/(.+)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^news/(.+)$ /hp_archive/news/$1 [R=301,L]
    </IfModule>
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    この場合新サイトで投稿した投稿も全て/hp_archive/news/に飛ばされてしまいうまくいきませんでした。
    また何か方法がありましたらご享受いただければ幸いです。色々とありがとうございます。

    ※因みに、パーマリンクは
    旧サイトはnews/%post_id%
    新サイトはnews/%postname%
    になっているので、その辺りの条件をhtaccessに入れたらたら、うまくいくのかな?と思ったんですが
    正規表現が苦手なので困っております。

    • この返信は1ヶ月、 1週前にalitomoが編集しました。
    フォーラム: 使い方全般
    返信が含まれるトピック: 特定の条件下でのリダイレクトに関して
    トピック投稿者 alitomo

    (@airarimichi)

    もしかしたら、新サイトの投稿のパーマリンクは
    ドメイン/news/%postname%/
    と文字列になっているんですが、
    旧サイトのパーマリンクは数値になっているので、
    ドメイン/news/12345/ 
    その辺りが関係しているのかもしれません。

    フォーラム: 使い方全般
    返信が含まれるトピック: 特定の条件下でのリダイレクトに関して
    トピック投稿者 alitomo

    (@airarimichi)

    @rocketmartue

    >1. 具体的に何がどのように上手くいきませんでしたか?
    お伝えしている通り古い投稿のリンクの場合、ニュースのトップページ(アーカイブトップ)が表示される。
    ※存在しないリンクなのだから404にならないと駄目なのに、301になってアーカイブトップが表示される。

    >どのようなコードを書かれましたか?

    お待たせしすいません(bow)原因考えてみました。
    ニュースの場合、存在しないニュースの場合に404ステータスではなく、
    下に貼ったように301リダイレクトになっていることが原因ですね。
    .htaccess のルールを優先させ書くとしたら以下のようになりそうです。

    ーーーー新サイト側htaccess抜粋ーーーー
    RewriteEngine On 実在するファイル・ディレクトリの場合は何もせずPHPに渡す

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L] 存在しない場合はリダイレクト

    RewriteRule ^(.*)$ /hp_archive/$1 [L,R=301]
    ーーーー新サイト側htaccess抜粋ーーーー

    ファイル・ディレクトリが存在する場合:
    PHPのルーティング処理にリクエストが渡されます。
    存在しない場合:
    Apacheのリダイレクトルールが適用されます。

    レスポンス
    HTTP/2 301 Moved Permanently
    Server: nginx
    Date: Sat, 11 Jan 2025 09:29:31 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Length: 0
    Location: https://********.jp/news/
    Expires: Wed, 11 Jan 1984 05:00:00 GMT
    Cache-Control: no-cache, must-revalidate, max-age=0
    X-Redirect-By: WordPress

    >投稿類の旧サイトのリンクが誘導されないということですが、具体的にどのようなリンクですか?
    https://*******.jp/news/12323/ を https://*******.jp/hp_archive/news/12323/ へリダイレクトしたいが実際は https://*******.jp/news/ が表示される。

    >旧サイトの投稿数は、何記事ありますか?
    800くらいあります。

    • この返信は1ヶ月、 2週前にalitomoが編集しました。
    フォーラム: 使い方全般
    返信が含まれるトピック: 特定の条件下でのリダイレクトに関して
    トピック投稿者 alitomo

    (@airarimichi)

    @rocketmartue さんありがとうございます。
    実は.htaccessでのリダイレクトも詳しい方に聞いて実行してみたんですが、うまくいきませんでした。
    404.phpは

    <?php
    $url = "Location:https://*****/hp_archive" . $_SERVER['REQUEST_URI'];
    header($url);
    exit();

    となっています。

    問題は投稿のアーカイブページにて存在しない投稿のリンクは404にならず、投稿のトップページに戻ってしまう事だと思いますので、パーマリンクのコアプログラムに詳しいかたにその辺りをお伺いしたいと思っています。

    トピック投稿者 alitomo

    (@airarimichi)

    先程上記テストを試したところ、新しいサイトでは問題なく動いたため、ちゃんと動くサイトをコピーして試して見ました。それでもだめだったため、既存サイトのDBを一旦削除してお引越しの前のDB情報をインポートしたら、インポートの際にエラーが出ました。
    おそらくそのエラーに気づかずに移行していたんだと思い、再度DBを削除してエラーの原因を潰して再度インポートしたところエラーなくインポート出来ました。
    その後管理画面に入って新規投稿したところ問題なくWYSIWYGが!!!
    DBの移動は改めて慎重にしなければ行けないなと思いました。

    因みにエラーの原因は移行先のDBのテーブルプリフィックスに合わせて、移行前のテーブルプリフィックスを置換していたのですが、それでインポートエラーが出たため、テーブルプリフィックスを置換するのではなく、configのプリフィククスを移管元のプリフィックスに変えて対応しました。

    CGさん、npsslさん、munyaguさん、いろいろとご教授頂きありがとうございます。

    トピック投稿者 alitomo

    (@airarimichi)

    CGさん、npsslさん、munyaguさん、いろいろとご教授頂きありがとうございます。
    そもそもテーマがワードプレスに最新バージョンに対応していないのですね。
    移行の際のDB情報は保存していますので、再度新しく作った環境に教えて頂いた通りのやり方で移行してみます。
    そこで上手く動いたらプレスクなのでそれを元のドメインにコピーしてみます。
    いろいろありがとうございます。

    トピック投稿者 alitomo

    (@airarimichi)

    わかりました。
    動作確認したか良く覚えていないので
    テストサーバーで確認したワードプレスに再度移行してみて確認してみます。
    ありがとうございます。

    トピック投稿者 alitomo

    (@airarimichi)

    バージョン 4.9.8です。
    データベースの移行はcpiのphpmyadminからテーブルを全てDLして、
    引っ越しでドメインは変わらなかったので、http://の部分を目視でhttps://に一つづつ変更して移しました。

    • この返信は6年、 7ヶ月前にalitomoが編集しました。
    トピック投稿者 alitomo

    (@airarimichi)

    新しいドメインを追加してテストサイトに同じサーバーの同じ条件SSLでphp7.1でワードプレスをインストールしました。
    その上で、プラグインとテーマをそれぞれ導入して確認してみた所問題なくWYSIWYGは出来ました。
    ただ、その他の部分でレボリューションスライダーがphp7に対応していない問題など、新たに出ました。

    また使用しているテーマで
    <b>Notice</b>: Hybrid_Widget_Archives で呼び出された WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています ! 代わりに

    __construct()

    を使ってください。 in <b>/var/www/vhosts/——.com/httpdocs/wp-includes/functions.php</b> on line <b>3916</b><br />

    このようなNoticeが出ています。

    ただWYSIWYGはちゃんと起動しているようなので、サーバーの問題ではないようです。

    トピック投稿者 alitomo

    (@airarimichi)

    CGさんご提案ありがとうございます。
    phpのバージョンに関しての流れをご説明しますと
    お引越し前のCPIではphp5.36で運用しておりました。
    その後SSL化に伴いレッツエンクリプトが使用出来るGMOのVPS[plesk]に移動しました。
    移動に伴いphpのバージョンを7.1.21に変更しました。

    理由はこの機会にphp7にして将来に備えようと思ったからです。
    しかし、それにより使用しておりましたall in one event calenderというプラグインに不具合が起き、管理画面に入れない状態になりました。(管理画面に入れないだけで、HPは問題なく表示されています。)

    そこで、いろいろ調べた所、phpのバージョンが問題になるということがわかったのでphp7.031にphpのバージョンを変更しました。

    その後無事管理画面に入れるようになったので一安心していたのですが、前記の通り新規投稿しようと思ったら新規投稿の際にパーマリンクが「?preview=true」、その下には「最新の投稿を表示するページを編集中です。」というメッセージ、投稿するための青いボタンが「レビュー待ちとして送信」という状態でした。

    やはりphpのバージョンが怪しいなと思ったので、php5.4.16と5.637にも変更してみましたが、症状は変わりませんでした。

    以上がphpのバージョンに関するあらましです。
    ご教授よろしくお願いします。

    alitomo

    (@airarimichi)

    下記内容とほぼ同様でしたが、解決しましたので困っているひとは参考にして下さい。

    >入力画面(フロントページ)、確認画面、完了画面をそれぞれ別テンプレートの固定ページで作成し、
    >フォームのURLとしてフルパスで設定しました。

    ・やったこと
    【URL設定の値】を最初
    入力画面URL:http:hogehoge.com
    確認画面URL:http:hogehoge.com/confirm
    完了画面URL:http:hogehoge.com/thanks
    エラー画面URL:http:hogehoge.com/confirm

    としていましたが、リダイレクトループの発生は治りませんでした。
    スラッシュの有り無しや、フルパス指定をやめても同様でしたが、
    下記設定にした所治りました。

    【正解の設定】
    入力画面URL:空白にする
    確認画面URL:http:hogehoge.com/confirm
    完了画面URL:http:hogehoge.com/thanks
    エラー画面URL:http:hogehoge.com/confirm

    上記設定にした所問題なく、機能するようになりました。
    フォームの設置しているページがフロントページだったのかなと思いますが、
    同様の原因で悩んでいる方は一度試してみてはいかがでしょうか?

    トピック投稿者 alitomo

    (@airarimichi)

    おっしゃるとおりだと思います。
    今度から気をつけますね。

    ひとまず解決して良かったです。
    ありがとうございます。

    フォーラム: テーマ
    返信が含まれるトピック: 自作テンプレートでのサイト内検索の不具合です。
    トピック投稿者 alitomo

    (@airarimichi)

    自己解決しました。
    いつの間にかソースコード全体が
    formタグにラップされていました。
    ですのでフォームタグ内にフォームタグがあるような格好になっていたため不具合が出ていたようです。

    フォーラム: テーマ
    返信が含まれるトピック: 自作テンプレートでのサイト内検索の不具合です。
    トピック投稿者 alitomo

    (@airarimichi)

    改めて出力されたコードを見てみたところ
    クロムのF12ツールではなぜかformのタグ部分が消えていました。

    右クリックから実ソースを確認したら表示されています。
    何か記述が間違っているのでしょうか?

15件の返信を表示中 - 1 - 15件目 (全20件中)