URLまわりのコントロールといえばSEO Strict URLsが有名ですが、やや負荷が高いために敬遠している人もいらっしゃると思います。そもそもコアの処理自体もそんなに軽いわけではなさそうなんですが・・とりあえず、フォルダ(コンテナ)タイプのリソースに対しては拡張子htmlを付けずに「/」スラッシュで止める。だけでよい。という処理のためにコードに手を入れてみました。当メッセージに添付しておきます。
手を入れた感想としては、URLまわりに関してはコードがトリッキーで難解だということ。さほど長いコードでもないですが、もう少しシンプルな制御ができないものかなあと感じました。リクエストのたびにURLを生成しているので効率もよくないですね。[*own_alias_path*]とか[*sub_resources*]などの形で投稿時に値を保持する仕組みにすれば、見通しと効率に優れた処理が実現できるのではと思いました。
エイリアスを設定してない場合のフレンドリーURL処理に問題がありました。修正して添付しておきます。
該当リソースがディレクトリ相当かどうかを逐次演算せずにキャッシュから読み出すだけにしました。
-
- 11 Posts
以下ディレクトリにそれぞれのファイルが(ファイル所在のメモ)。
manager\processors
cache_sync.class.processor.php
manager\includes
document.parser.class.inc.php
-
- 11 Posts
ローカル環境で試しましたが、
デフォルト・・・ http://localhost/modx/test1.html
コンテナ設定ON・・・ http://localhost/modx/test1/
コンテナ設定OFF・・・ http://localhost/modx/test1/
という結果になりました。
コンテナ設定OFFの時に、test/ となってしまいますね(つまり見境無く/止めになってます)。
尚、テスト方法は、
http://localhost/modx/test1.html(1)
http://localhost/modx/test2.html(2)
というリソース(括弧内はリソース番号)を作り、test1からtest2へのリンクを作り、リンク先が正常に出力されているかを確認しました。
(<a href="[~2~]">テストリンク</a>のようなソースだけ貼ったリソースを用意して)
お返事が遅くなりましたが、チェックありがとうございます。同じ状況で確認してみます。