すべての呼び出しを1つのディレクトリにそのディレクトリの1つのスクリプトにルーティングしようとすると、mod_rewriteに問題が発生します。この単純なルールのLinuxに取り組んでいた。このため、このOS上のエラーログにMac OSXでModリライトSierra
のRewriteRule * api.cgi
、私は「のRewriteRuleを:正規表現 『*』をコンパイルすることはできません」を取得。
私は他のいくつかのことを試しましたが、modリライトはいくつかのマッチでは動作しますが、ディレクトリパスではなくファイル名に対してのみ動作します。
例: RewriteRule。* api.cgi - ファイル名を使って何かをapi.cgiにルーティングして動作していることを証明しますが、/ api/config /をapi.cgiにルーティングします。私は/api/config/something.somethingを実際に書き直すようにしか見えません。つまり、ファイル名が必要です。
アイデア?私は文字通り、このディレクトリで呼び出されたすべてのものを、いくつのディレクトリが深くても、最後にファイル名があるかどうかにかかわらず、api.cgiにルーティングしたいと思っています。
おかげで、あなたが使用することができます マット
ありがとうございますが、依然として同じ問題です。 RewriteRule^api.cgiとRewriteRule。* api.cgiの両方は、aで何かをリダイレクトします。それはファイルパスだけではありません。 /api/config.htmlは/ api/configをリダイレクトします。リダイレクトされますが、/ api/configはリダイレクトされません。指定されたエラーメッセージは標準です404 要求されたURL /〜username/cgi-bin/api2/configがこのサーバー上に見つかりませんでした。 明らかに、URLは存在しませんが、404の代わりにリダイレクトするはずです。 –
いいえ、正規表現 '。*':アスタリスクは、先行要素が0回以上出現したことを示します。そして '.'任意の1文字と一致します。 https://en.wikipedia.org/wiki/Regular_expression – Croises
問題はあなたのCGIにあると思います – Croises