0

example.com/language/en が example.com/language?lang=en を指すようにしようとしています @language は既に機能しています (一種のバグがまだありますが、最後に説明します)残念ながら、@language と @extensionless-php を同時に機能させる方法がわかりません。@language コードをテストするために、場所の @extensionless-php を削除し、@location を追加しました。そして、現在の方法では、この //example.com/language/en/en/en のように複数のパラメーターを受け入れます。言語の後に複数の / がある場合は 404 エラーを返すようにします

現在の構成:

location / {
    try_files $uri $uri.html $uri/ @extensionless-php;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

location @language {
    rewrite ^/language/(.*)$ /language.php?lang=$1 last;
}
4

1 に答える 1

0

答えは単にrewrite ^/language/(.*)$ /language.php?lang=$1 last;@languageから削除し、正規表現を編集して、URIが/language/en/404エラーになるようにすることでした

location / {
    try_files $uri $uri.html $uri/ @extensionless-php;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

rewrite ^/language/([^/]+)$ /language.php?lang=$1 last;
于 2015-04-23T23:46:42.430 に答える