web-dev-qa-db-ja.com

URLからID(カテゴリと記事)を取り除く(Joomla 3.3 / 3.4 / 3.5)

Joomla 3.3.6(編集:3.5.)サイトが3つのレベルでのみ構成されています。

  • 4つの大きなカテゴリ(i、ii、iii、iiii)
  • それぞれがいくつかの中間カテゴリ(A、B、C、...)に分けられます
  • そして最後に記事
  • 2つの言語(en、pt)

Search Engine Friendly URLsUse URL rewritingAdds Suffix to URLおよびmultilanguage supportを設定した後のURLshould次の形式である:

http://www.example.com/en/bigcatiii/intercatA/articlex.html

しかし、Joomlaをインストールしていて、Joomla-Baby-Version以降に解決策を求めている他の多くの人と同じように、私は次のようになりました。

http://www.example.com/en/bigcatiii/666-intercatA/articlex.html

ここで、666は、目的のないカテゴリIDを示す地獄の数字です。

今答えを探して、私はこの答えを見つけました:

 Edit “components/com_content/router.php“
 (You’ll probably have to re-do this step every time you update Joomla.)
 Replace the lines 38 and 290 with:
 $advanced = $params->get('sef_advanced_link', 1);

 and Replace line 426 with
 ->where($db->quoteName(‘alias’) . ‘ = ‘ . $db->quote($segment)); 

さて、まず第一に、426行目はすでにオリジナルのそれと同じです。第二に、これはトリックを行いません。それはで動作します:

http://www.example.com/en/bigcatiii/intercatA/articlex.html

しかし、以下を参照すると、404エラーが発生します。

http://www.example.com/en/bigcatiii/intercatA.html

また、[〜#〜] id [〜#〜]の数値が異なることに気づきました。 URL全体が

http://www.example.com/en/bigcatiii/666-intercatA/articlex.html

同じカテゴリの説明ページは

http://www.example.com/en/bigcatiii/333-intercatA.html

。htaccessに基づいて、より良く聞こえるが機能しない別の解決策もあります

RewriteEngine on
RewriteBase /
RewriteRule (\d+)-([^/]*) $2 [R=301,L]

URLsは問題ないように見えますが、ページが見つかりません。 Joomlaコアを変更する代わりに。htaccessを使用してソリューションを提供できれば、はるかに良いでしょう。

それでも、この他のgoogledの提案が有効であれば、Joomlaコアを変更しても問題ありません。

 Copy “components/com_content/router.php” to “/templates/your-template/html”

つまり、router.phpを「ローカル」に移動すると、アップグレード後にすべてをやり直す必要がなくなります。 (もちろん、router.phpが更新されていない限り、もう一度ミラーリングしたほうがよいでしょう。)

このパズルを解くためにあなたの時間をありがとう!

参照

1-URLの記事IDを変更/削除しますか?

2-記事ID番号の削除

-URLの記事IDを削除する方法は?

4- joomla 3.0のURLから記事IDを削除します

5-SEFの有効化

6-joomla 3のURLから記事IDを削除します

7- joomla 3 URLから記事IDを削除します

8- .htaccessリダイレクトルール

9-テスト.htaccess


編集(2016年5月2日):Joomlaの新しいバウンティ最終バージョン3.5

17
Dr Beco

Joomla 3.5を新しくインストールしましたが、古い方法で問題ありません。ルーターファイルで何かが変更されているため、joomlaのアップグレード後に手順を繰り返す必要があります。

./components/com_content/router.phpの行は34行と295行になりました。

再び01に変更して、次のようにします。

$advanced = $params->get('sef_advanced_link', 1);


私のURLは例: http://joomla.lan/en/category-en-gb/article-en-gbは、Search Engine Friendly URLsをオンにすると正常に動作します。

Adds Suffix to URLYesに切り替えると、.htmlがURLに追加されます。
Use URL RewritingおよびUnicode Aliasesはオプションで機能します。 IIS7またはApacheでURL書き換えエンジンを使用する場合は、htaccess.txtの名前を.htaccessに、webconfig.txtの名前をwebconfigに変更する必要があります。一部のホスティング業者は、サーバー構成が制限されていることに注意してください。 500 internal server errorを取得した場合は、.htaccessを編集し、前に追加してOptions +FollowSymlinksおよび/またはOptions -Indexesおよび/またはRewriteBase /の行をコメントアウトする必要があります。 #。後者はJoomla3.5ですでに無効になっています。 RewriteBase設定は、JoomlaがWebルートではなくサブフォルダーにインストールされている場合に役立ちます。

他のサーバーでは、Use URL RewritingNoに設定します。


私はあなたの問題を再現することはできません、これらの2つのコード編集ですべてが正しく機能しています。もう一度試してみてください。解決できない場合は、正確な動作(URL、エラーも同様)を投稿してください。修正できない場合は、ソースを再インストールする必要があります。

2

それを調べた後、私はいくつかの有用な情報を見つけました。 [〜#〜]免責事項[〜#〜]私はJoomlaを使用しておらず、動作中のインストールでこれを試していません。これらは結果にすぎません。いくつかの検索と読み取りのソースコードの。とにかく、これが私が見つけたものです。

私が集めたものから、変化しているようです

_$advanced = $params->get('sef_advanced_link', 0);
_

_$advanced = $params->get('sef_advanced_link', 1);
_

十分なはずです。 ただし、に注意してください。このオプションを使用すると、おそらく両方のURL(IDありとなし)が使用可能になり、SEOには適していません。問題は404にありますが、それはJoomlaルーティングシステムの問題のようです。構成されているだけで使用されていないメニューリンクを使用して、404を補正できます(以下を参照)。

あなたの問題のいくつかの起源:

  • たとえば、ルーティングでは、メニューを使用してカテゴリID(_Line ~385 // We get the category id from the menu item and search from there_)を検索します。
  • URLセグメント(/で区切られている)ごとに、最初にカテゴリエイリアスが検索されるため、エイリアスを確認してください。カテゴリでエイリアスが見つからない場合は、検索クエリのURLのIDに依存します(Line ~425 ->where($db->quoteName('catid') . ' = ' . (int) $vars['catid'])
  • CategoryIDまたはarticleIDがメニューに添付されると、一意のグローバルエイリアスがあることがわかっているため、カテゴリID _$query['catid']_が削除されます(行〜69)

したがって、1つの解決策は次のことを行うことです。

カテゴリごと、記事ごとにメニュー項目を作成してみてください。メニューがどこにも表示されず、管理インターフェースでのみ構成されている場合でも、Joomlaが適切な記事/カテゴリを見つけられるように、カテゴリと記事のグローバルな一意のルーティングエイリアスが作成されます。私の理解では、カテゴリまたは記事にメニュー項目がある場合、タイトルエイリアスのみが使用されます。ただし、リソースがないため、idとslugの組み合わせを使用してリソースを検索します。

多くの人がこれについて不平を言っているので、それはJoomla 3.5で修正されるべきです

参考資料とディスカッション:

明るいメモで締めくくるには、 開発者は制限を認識しています ;)のようです。

1
achedeuzot