2013-07-19 19 views
17

私は、phpのバックエンドにあるApacheで静的ファイルのフロントエンドとしてnginxを使用するようにmediawikiサイトを変換しています。私はルートディレクトリ "example.com"を見るときを除いてこれまでのところすべての作業を行っていますが、それはディレクトリリストを提供しようとし、それを無効にしてインデックスファイルを持っていないので403エラーを出します。nginxのサブディレクトリにルートアドレスを書き直します

私は今の場所に持っているApacheのリライトルールは単純です:

RewriteRule ^$ /wiki/Main_Page [L] 

私はnginxの中の位置指令と同様のものを試してみましたが、それは働いていない:

location =/{ 
    rewrite "^$" /wiki/Main_Page; 
} 

残りの私のロケーションディレクティブは次のとおりです:

location/{ 
    try_files $uri $uri/ @rewrite; 
} 

location @rewrite { 
    rewrite ^/wiki/(.*)$ /w/index.php?title=$1&$args; 
} 

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    try_files $uri /w/index.php?title=$1&$args; 
    expires max; 
    log_not_found off; 
} 

location ~ \.php?$ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:8080; 
} 

私は単純にindex.phpファイルにheader( 'Locatイオン: ')が、私はむしろ書き換えルールで正しくそれを行うだろう。

nginxを使用してmediawikiを実行しているオンラインで見つかったすべての例は、/ wiki /サブディレクトリではなくwiki.example.comとしてwikiを実行します。

編集:try_filesに次のように追加しようとしました:try_files $uri $uri/ @rewrite /wiki/Main_Page;と同じ403エラーの結果。

答えて

27

nginx ircチャットでヘルプが見つかりました。

基本的には、リライトの代わりにリターンを使用する必要がありました。だから私は、これを変更する:これに

location =/{ 
    rewrite "^$" /wiki/Main_Page; 
} 

location =/{ 
    return 301 http://www.example.com/wiki/Main_Page; 
} 
0
  1. 必ず "/ウィキ/ Main_Pageは" 成功したサーバーのセクションで
  2. チェックをアクセスすることができ、何が存在してくださいませんグローバルリライトルール。サーバーセクションの書き換えルールは、場所セクションの前に実行されます。

    location =/{ 
        rewrite "^.*$" /wiki/Main_Page break;  
    } 
    

ご注意 "休憩" ここでは、このような場所のセクションに書き換えルールを使用して

  • 。再書き込みサイクルを打ち消す手段。

    このページがバックエンドサーバーにある場合、ここではproxy_passを使用する必要があります。

  • 0

    あなたが使用答えはあなたが/wiki場所に/場所をスキップすること、リダイレクトされ、あなたはこれを試すことができます代わりに、これは私が好む/ URI

    +0

    このコードはどこに書きますか? –

    +0

    あなたのサーバブロックの@Pankajkatiyar –

    8

    用のサーバーMain_Pageをすべき

    location =/{ 
        rewrite^/w/index.php?title=Main_Page&$args last; 
    } 
    

    使用する:

    location =/{ 
        return 301 http://$host/wiki/Main_Page; 
    } 
    
    +1

    同じ考え方があるので、受け入れられた答えを改善することはもっと役に立ちませんか? –

    関連する問題