nginxURLの書き換えに失敗しました

techworld

.htaccessルールをnginxに移行しようとしています。SOとURLリライターに関するほとんどすべての質問を試しましたが、成功しませんでした。要するに、私は次の動的URLを変換したいと思います:

から

[1] - https://vc.test/results.php?url=ngo-service
[2] - https://vc.test/jobs.php?d=17&t=oil-&-gas
[3] - https://vc.test/jobs.php?d=17

[1] - https://vc.test/ngo-service
[2] - https://vc.test/17/oil-&-gas
[3] - https://vc.test/17

この問題を解決するために助けを求めてください。

私のnginxの取り組み

server {
    listen      127.0.0.1:80;
    listen      127.0.0.1:443 ssl http2;
    ssl_certificate_key "d:/winnmp/conf/opensslCA/selfsigned/vc.test+4-key.pem";
    ssl_certificate "d:/winnmp/conf/opensslCA/selfsigned/vc.test+4.pem";    
    server_name     vc.test;
    root    "d:/winnmp/www/vc";
        
    ## Access Restrictions
    allow       127.0.0.1;
    deny        all;
        
    autoindex on;

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

        if ($query_string ~* "fbclid="){
            rewrite ^(.*)$ /$1? redirect;
            break;
        }
        
        if ($query_string ~* "url="){
            rewrite ^(.*)$ /%1? redirect;
            rewrite ^/(.*)$ /results.php?url=$1 permanent;
            break;
        }

        rewrite ^/([0-9]+)/(.*)?$ jobs.php?d=$1&t=$2 break;
        rewrite ^/([0-9]+)?$ jobs.php?d=$1 break;

    }

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

    location ~ \.php$ {
        try_files $uri =404;
        include     nginx.fastcgi.conf;
        include     nginx.redis.conf;
        fastcgi_pass    php_farm;
        fastcgi_hide_header X-Powered-By;
    }
}
リチャード・スミス

あなたのif ($query_stringブロックが何のためにあるのかわからないので、私はそれらを無視します。

rewrite...last書き換えられたURIを別のlocationブロックで処理する場合に使用.phpます。たとえば、URIが。で終わる場合などです。すべてのNginxURIは、先頭/始まりますたとえば、use/jobs.phpではなくusejobs.phpです。

rewriteステートメントのリストをlocation /ブロックに配置すると、一致するものが見つかるまで順番に評価されます。一致するものが見つからない場合、try_filesステートメントが評価されます。それがリライトモジュールの仕組みです!!

ただし、最初の書き換えルールは一般的すぎるため、try_filesステートメントによって実行されることを意図したURIの一部が破損する可能性がありますより良い解決策は、すべてのrewriteステートメントを同じ名前のlocationブロックに配置することです。

例えば:

index index.html index.htm index.php;

location / {
    try_files $uri $uri.html $uri/ @rewrite;
}
location @rewrite {
    if (-f $document_root$uri.php) {
        rewrite ^ $uri.php last;
    }
    rewrite ^/([0-9]+)/(.+)$ /jobs.php?d=$1&t=$2 last;
    rewrite ^/([0-9]+)$ /jobs.php?d=$1 last;
    rewrite ^/([^/]+)$ /results.php?url=$1 last;
    return 404;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}

の使用については、この注意参照してくださいif

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Discord.pyの書き換えに失敗しました

分類Dev

引数付きのNGINXURLを引数なしのURLに書き換えます

分類Dev

JMeter5-テキストの置き換えに失敗しました

分類Dev

activecollab 5 nginxURL書き換えが機能しない

分類Dev

Pythonの連続書き込みに失敗しました

分類Dev

実行に失敗しました:TypeError:-DocsListをDriveAppに置き換えた後

分類Dev

SymbolWarning:NaNに置き換えられたシンボルの読み取りに失敗しました

分類Dev

低品質のpng画像をHDpng画像に置き換えると、Androidでビルドに失敗しました

分類Dev

NPM-構成内の環境の置き換えに失敗しました:$ {NPM_TOKEN}

分類Dev

Herokuとノード0.10.29:構成内のenvの置き換えに失敗しました

分類Dev

pwdからのコンテンツで、sedの置き換えに失敗しました

分類Dev

単純なmod書き換えクエリ文字列ですが、それでも失敗しました

分類Dev

dart-HttpClientRequesの本体の書き込みに失敗しましたか?

分類Dev

失敗したブランチを別のブランチに置き換えます

分類Dev

BMPファイルの書き込みに失敗しました

分類Dev

Pymssqlサーバーへの書き込みに失敗しました-20006

分類Dev

session_start():ロックの書き込みに失敗しました

分類Dev

MVがASNI結合を使用している場合、クエリの書き換えは失敗します

分類Dev

PHP、mongo.soは書き込みに失敗しました

分類Dev

日付の変換時に変換に失敗しました

分類Dev

varchar 値の変換時に変換に失敗しました

分類Dev

sparklyrを介したsparkデータフレームの「\\」または「\\\\」の置き換えは失敗します

分類Dev

CloudWatchログリソースポリシーの書き込みに失敗しました:LimitExceededException:リソース制限を超えました

分類Dev

Pandas_datareaderエラーSymbolWarning:シンボルの読み取りに失敗しました: 'T'、NaNに置き換えられました

分類Dev

postmanMacのSSL証明書の検証に失敗しました

分類Dev

Python「オブジェクトの書き換えに失敗しました」を使用した1つのGoogleクラウドストレージリージョンから別のリージョンへのストレージ転送ジョブ。

分類Dev

Pythonurllib証明書の検証に失敗しました

分類Dev

MechanicalSoupで証明書の検証に失敗しました

分類Dev

AppService管理証明書の作成に失敗しました

Related 関連記事

  1. 1

    Discord.pyの書き換えに失敗しました

  2. 2

    引数付きのNGINXURLを引数なしのURLに書き換えます

  3. 3

    JMeter5-テキストの置き換えに失敗しました

  4. 4

    activecollab 5 nginxURL書き換えが機能しない

  5. 5

    Pythonの連続書き込みに失敗しました

  6. 6

    実行に失敗しました:TypeError:-DocsListをDriveAppに置き換えた後

  7. 7

    SymbolWarning:NaNに置き換えられたシンボルの読み取りに失敗しました

  8. 8

    低品質のpng画像をHDpng画像に置き換えると、Androidでビルドに失敗しました

  9. 9

    NPM-構成内の環境の置き換えに失敗しました:$ {NPM_TOKEN}

  10. 10

    Herokuとノード0.10.29:構成内のenvの置き換えに失敗しました

  11. 11

    pwdからのコンテンツで、sedの置き換えに失敗しました

  12. 12

    単純なmod書き換えクエリ文字列ですが、それでも失敗しました

  13. 13

    dart-HttpClientRequesの本体の書き込みに失敗しましたか?

  14. 14

    失敗したブランチを別のブランチに置き換えます

  15. 15

    BMPファイルの書き込みに失敗しました

  16. 16

    Pymssqlサーバーへの書き込みに失敗しました-20006

  17. 17

    session_start():ロックの書き込みに失敗しました

  18. 18

    MVがASNI結合を使用している場合、クエリの書き換えは失敗します

  19. 19

    PHP、mongo.soは書き込みに失敗しました

  20. 20

    日付の変換時に変換に失敗しました

  21. 21

    varchar 値の変換時に変換に失敗しました

  22. 22

    sparklyrを介したsparkデータフレームの「\\」または「\\\\」の置き換えは失敗します

  23. 23

    CloudWatchログリソースポリシーの書き込みに失敗しました:LimitExceededException:リソース制限を超えました

  24. 24

    Pandas_datareaderエラーSymbolWarning:シンボルの読み取りに失敗しました: 'T'、NaNに置き換えられました

  25. 25

    postmanMacのSSL証明書の検証に失敗しました

  26. 26

    Python「オブジェクトの書き換えに失敗しました」を使用した1つのGoogleクラウドストレージリージョンから別のリージョンへのストレージ転送ジョブ。

  27. 27

    Pythonurllib証明書の検証に失敗しました

  28. 28

    MechanicalSoupで証明書の検証に失敗しました

  29. 29

    AppService管理証明書の作成に失敗しました

ホットタグ

アーカイブ