[eccube3]urlから「user_data」を削る

できることなら.htaccessで済ませたかった。
新しくページを作成するとurlに「user_data」が追加される。
誰も幸せにならないこれを取り払う。

参考

マニュアル – 新規作成したページURLから「user_data」を消す方法とURLを出力するテンプレートタグ

やること

  1. \src\Eccube\ControllerProvider」に行く
  2. FrontControllerProvider.php」を開く
  3. 以下の内容に変更

Before

$c->match('/'.$app['config']['user_data_route'].'/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '([0-9a-zA-Z_\-]+\/?)+(?<!\/)')->bind('user_data');

After

$c->match('/' . '/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '[0-9a-zA-Z_]+')->bind('user_data');

3.0.18環境下で42行目のところ。
念の為、元のをコメントアウトして追記するのがいいかも。

効果

1行書き換えるだけで「user_data」のないurlでやっていけるようになる。

これが
http://localhost/eccube3018/html/user_data/concept
こうなる

404 Error - Not Found

「user_data」付きのurlは無効になるので気になる人は.htaccessでリダイレクトさせるとかしたらいいんじゃないですかね、しなくていいと思うけど。

urlコードは通常通りでOK、「user_data」無しのurlが吐き出される。

{{ url(app.config.user_data_route, {'route': 'concept'}) }}

ベタ打ちでリンクを作ってなければっていう条件だけど、サイト内全部に反映されるので手間もない。

例外として、管理画面「ページ管理」の中の表記は「user_data」が入ったままだから注意。多分違う設定下から表示させてんだろうね。

ダメくせえなこれ

「user_data」だけじゃなくて他の所のも省略されてませんかねこれ

コメント

タイトルとURLをコピーしました