web-dev-qa-db-ja.com

JoomlaまたはApacheをv1 SEF URL用に構成するにはどうすればよいですか?

Joomla 1.サイトをv3.5にアップグレードできることをとても嬉しく思います(ピーナッツギャラリーからのコメントはありませんください、笑)。全体的には問題ありませんが、SEF urlを書き込む古いバージョンはv3とはかなり異なり、私はApache/htaccessの専門家ではありません。

最も懸念されるリンクの大部分は、販売される製品にカスタムコンポーネントを使用しているリンクです。このような:

www.example.com/component/option,com_virtuemart/page,shop.product_details/flypage,shop.flypage/product_id,1/category_id,1/manufacturer_id,0/Itemid,59

このような多くのコアJoomlaリンクが機能しており、変換する必要がありますが、それほど重要ではありません。

www.example.com/content/view/106/159/

これらは、現在使用されている.htaccessの2つのセットです。新しい.htaccessファイル内にv1 SEFセクションを配置しようとしましたが、これはv3.5の動作に干渉し、404エラーが続くようです。

## Begin - Joomla! v1.0 SEF Section (from old site).
RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR]
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
## End - Joomla v1 SEF Section.

## Begin - Joomla! v3.5 core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
## End - Joomla! core SEF Section.

現在のように、上記のようなリンクは404エラーになります。そのため、私が想像できる最も簡単な「単純な」解決策(ただし、設定方法がわからない)は、\component( singular)そしてその中で.htaccessmod_rewriteを何らかの方法で使用して、Apacheが「クエリ文字列」を解析し、キャプチャして、変換の問題をすべて処理してリダイレクトするカスタムコンポーネントにそのようなものをリダイレクトします。それに応じて:

www.example.com/component/option,com_virtuemart/.../Itemid,59www.example.com/index.php?option=com_mycomponent&...&Itemid=59に書き換えられます

これは実用的なアプローチですか?そうであれば、.htaccessはどのように見えますか?そうでない場合、私が知らない別の解決策があります(あまり信頼性の高いJ1.0ドキュメントはもうありません)

4
GDP

.htaccessを使用せずにソリューションをつなぎ合わせることができましたが、誰かがソリューションを持っている場合は、よりクリーンなソリューションに興味があります。

  1. _construct ()以外のメソッドがないという点で、従来の意味ではまったく何もしないシステムプラグインを作成しました。
  2. _construct()メソッドでは、古いリンクで見つかった、Joomla v1に固有のURIの文字列を単にチェックしました。
  3. 見つかると、奇妙なJoomla SEF文字列を解析して使用可能なものにします。それで、私は必要な新しいJ3.5 URLを作成し、$app->redirect()を使用してそこにユーザーを送りました。

私はそれが好きではありませんが、それはうまくいきます。

4
GDP