2017-09-21 14 views
0

すべての呼び出しを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にルーティングしたいと思っています。

おかげで、あなたが使用することができます マット

答えて

0

RewriteRule^api.cgi 

しかし、あなたは多くのテストを行っている場合は、通常、結果はそれがいる可能性があり、

RewriteRule .* api.cgi 

と全く同じですそれはキャッシュの問題です。キャッシュをクリアするか、別のブラウザでクリアしてください。

+0

ありがとうございますが、依然として同じ問題です。 RewriteRule^api.cgiとRewriteRule。* api.cgiの両方は、aで何かをリダイレクトします。それはファイルパスだけではありません。 /api/config.htmlは/ api/configをリダイレクトします。リダイレクトされますが、/ api/configはリダイレクトされません。指定されたエラーメッセージは標準です404 要求されたURL /〜username/cgi-bin/api2/configがこのサーバー上に見つかりませんでした。 明らかに、URLは存在しませんが、404の代わりにリダイレクトするはずです。 –

+0

いいえ、正規表現 '。*':アスタリスクは、先行要素が0回以上出現したことを示します。そして '.'任意の1文字と一致します。 https://en.wikipedia.org/wiki/Regular_expression – Croises

+0

問題はあなたのCGIにあると思います – Croises

関連する問題