質問

私は一見私の手から外れている問題に対処しようとしていますが、うまくいけば少し.htaccess magicで修正することができます。

問題の背景

現在、URLを構わせるために.htaccessファイルを使用しているMediaWikiの実装があります。 MOD_REWRITEのない株式メディアウィキの構成では、Wikiの各記事は通常訪問することによってアクセスされます。

www.mywebsite.org/index.php?title=george_clooney_(俳優)

.htaccess(下記のコード)では、同じページにアクセスすることで同じページにアクセスできるようにすることができます。

www.mywebsite.org/george_clooney_(俳優)

これはすべてそれがそうでなければならないように機能しています。内部的には、ここで問題はありません。

問題の概要

問題は私のWikiのトラフィックの重要な部分です。上記のリンクを追加すると、VBulletinはURLをBBコードリンクに解析しますが、終了括弧を出ます。実際、彼らの最後のBBコードは一般的にこのように見えます:

[url]http://www.mywebsite.org/George_Clooney_(actor[/url])
.

どちらが疑われるので、メンバーは通常キャッチされず、リンクは存在しないページにそれらを送信します。

www.mywebsite.org/george_clooney_(actor

私の質問

は、閉じ込められていない括弧が検出された場合に閉じ込め括弧を追加することができますか?

助けるために、私たちのWikiはかなり厳格な命名形式に従います。すべての場合において、括弧内の単語は記事名の末尾にあります。私たちの記事の命名規則は常に次のいずれかです。

Article_NameまたはArtical_Name_(タイプ)

だから、 "www.mywebsite.org/george_clooney_(actor"を訪問しようとする悪いリンクを手に入れようとすると、それらを自動的に "www.mywebsite.org/george_clooney_(actor)"にリダイレクトしたいと思います。< / P>

他の可能なルートは、404ページの記事提案セクションをコーディングしています。私はこれがもう少し仕事になると感じますが、このHTACCESS計画がうまくいかない場合は、訪問の解決策になります。

これは私が現在私の.htaccessファイルに持っているものです:

RewriteEngine On
Options +FollowSymLinks

# Require Subdomain
RewriteCond %{HTTP_HOST} ^mywebsite.org [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [L,R=301]

# Pretty URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [PT,L,QSA]
.

あらゆる助けが大いに感謝されるでしょう。 HTACCESS、および右の正規表現の組み合わせは、まだ私にとってほとんど新しい、魔法のようなものです。

役に立ちましたか?

解決

この規則をあなたの非常に最初の規則RewriteEngine On行のすぐ下)として使用することができます:

RewriteRule ^(.*?\(.*?[^)])$ /$1) [R=301,L,NE]
.

URLに括弧が1つしかないと仮定しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top