2

私は多くの方法を試しましたが、成功した結果はありません。

対象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

何か案は?ありがとうございました。

4

1 に答える 1

0

少し休憩して新鮮な検索が必要だったようですので、ようやく自分の質問に答えることができます。

解決策はここに隠されていました:

http://www.mediawiki.org/wiki/Manual:Short_URL/Allowing_for_escaped_characters_in_URI

RewriteEngine on
RewriteBase /

RewriteRule ^wiki$ wiki/Main_Page [R,NC]
RewriteRule ^wiki/$ wiki/Main_Page [R,NC]

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /wiki/([^?\ ]+)
RewriteRule ^wiki/(.+)$ /w/index.php?title=%1 [NE,L,QSA] 
于 2012-07-27T23:33:05.690 に答える