私は多くの方法を試しましたが、成功した結果はありません。
対象wikiアクセスURL:www.example.com/wiki/Ampersand_%26_nextampersand_%26_plus_%2B_nextplus_%2B_text
Apache は内部的に %26 と %2B を & と + として処理するため、再度 URL スタイルに変換する必要があります。(ここで述べたように www.mediawiki.org/wiki/Manual_talk:Short_URL/Ampersand_solution#Another_solution)
次の例は、組み合わせではなく、& または + の 1 つの出現のみを処理します。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.*)\&(.*)$ w/index.php?title=$1\%26$2
RewriteRule ^wiki/(.*)\+(.*)$ w/index.php?title=$1\%2B$2
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^/?wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]
問題は、すべての & および + 記号を %26 および %2B に置き換え、最終的に index.php の処理に転送する方法です。
私は次のようなアプローチを試みました
RewriteRule ^([^+]*)\+(.*) $1%2B$2 [N] #freezes
RewriteRule ^wiki/([^+]*)\+(.*) wiki/$1%2B$2 [N] #freezes
次のアドバイスから他の多くの(組み合わせて)が、有効な解決策を見つけることができませんでした。
Apache Mod Rewrite - Replace : character with another
mod_rewrite: アンダースコアをダッシュに置き換えます
ウィキペディアがそれを行う方法を成功させているので、間違いなく解決策があります。
http://en.wikipedia.org/wiki/%26_Yet_%26_Yet
http://en.wikipedia.org/wiki/C%2B%2B
何か案は?ありがとうございました。