5

だからapacheで私はフォルダを持っています:

www.domain.com/folder/folder1/index.php?word=blahblah

また、www.domain.com / folder / folder1 / blahblahにアクセスするユーザーが、URLを変更せずに上記のURLにリダイレクトされるようにしたいと思います。

したがって、folder / folder1 /に次の.htaccessがあり、完全に機能します。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?word=$1

だから私はnginxで同じ機能を実現したいと思っており、2つのコンバーターを使用しました: http ://www.anilcetin.com/convert-apache-htaccess-to-nginx/結果:

if (!-f $request_filename){
    set $rule_0 1$rule_0;
}
if (!-d $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(.+)$ /index.php?word=$1;
}

およびhttp://winginx.com/htaccessの結果は次のとおりです。

 if (!-e $request_filename){ rewrite ^(.+)$ /index.php?word=$1; }

今、私は両方で試しましたが、どちらも機能しません。どちらかに挿入してみました

location / {
}

またはで

location /folder/folder1 {
}

またはで

location ~ \.php$ {
}

すべての場所で404エラーが発生します

nginxエラーは、「アップストリームから応答ヘッダーを読み取っているときにプライマリスクリプトが不明です」または「そのようなファイルまたはディレクトリがありません」のいずれかを報告します。

誰かが私を教えてくれませんか?

前もって感謝します!

4

1 に答える 1

7

まず、を使用しないでくださいif。悪の場合-> http://wiki.nginx.org/IfIsEvil

これは、次の書き換えルールを使用して実行できます。

rewrite ^/folder/folder1/(.*)$ /folder/folder1/index.php?word=$1 last;

location / {}この書き換えルールをブロックのすぐ上に配置します

于 2013-01-29T15:47:39.147 に答える