カテゴリのURLのスラッシュがエンコードされてしまう

SOY Shopに関する話題はこちら。

カテゴリのURLのスラッシュがエンコードされてしまう

投稿記事by inunosinsi on 2018年3月30日(金) 05:17

私が管理するサイトのお問い合わせで下記の内容がありました。

soyshopのカテゴリに設定したURLのエンコードに関しての質問です。

商品一覧ページと詳細ページとでURL構造を一致させるため、soyshopのカテゴリに設定するURLに「 / 」(スラッシュ)を使っています。
例:category/dir/dir2

この際に、生成されるリンクのURLは正常に稼動しているのですが、canonicalタグで表示されるURLが「 / 」から「%2F」にエンコードされてしまいます。%2Fにエンコードされた側のURLへアクセスすると、404エラーとなります。
商品一覧ページでのCanonical フォーマット設定で「%PERMALINK%」と入力した際の動作です。

htaccessでの転送を試みましたが、うまく行かず、色々調べていたところ「Apacheは標準ではパス部分に %2F(/をエスケープしたもの) を含むURLに対して404を返す」との事のようで、htaccessでの転送は正常に動作しませんでした。

そこで、canonicalタグに生成されるURL内に「%2F」があった場合に、「 / 」に戻す処理をPHP側で行う必要があるのですが、どちらのファイルを調整すると良いでしょうか?


上記症状の修正ですが、
/CMSインストールディレクトリ/soyshop/webapp/src/domain/site/SOYShop_Page.class.phpの240行目付近を下記のように修正するば良いです。

コード: 全て選択
return $url;

  ↓ 下記のように修正

コード: 全て選択
//スラッシュのみエンコードされた文字列を戻す
if(strpos($url, "%2F")) $url = str_replace("%2F", "/", $url);
return $url;


少し上の行でカテゴリのエイリアス(URL)にrawurlencodeを行っているため、スラッシュの箇所のみ戻すという対応をしています。
良い方法があればお伝え下さい。
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 701
登録日時: 2008年6月12日(木) 20:48

Re: カテゴリのURLのスラッシュがエンコードされてしまう

投稿記事by tk8 on 2018年3月30日(金) 13:56

お問い合わせした者です。

ご指導頂いた方法で、無事にcanonicalのURLが正常に表示されるようになりました。

ご対応をありがとうございました。
tk8
 
記事: 52
登録日時: 2013年10月21日(月) 19:57


Return to SOY Shop

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[5人]

cron