問題タブ [mod-rewrite]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache - 特定のURLをリダイレクトしないようにする.htaccessディレクティブ
PrettyURL(私の場合はCakePHP)をRewriteRulesに大きく依存しているアプリケーションで.htaccess
、この書き換えから特定のディレクトリを除外するようにディレクティブを正しく設定するにはどうすればよいですか?あれは:
デフォルトでは、へのすべてのリクエスト/appRoot/*
は、によってピックアップされるように書き換えられapp/webroot/index.php
、そこで分析され、対応するコントローラーアクションが呼び出されます。これは、次のこれらのディレクティブによって実行され.htaccess
ます。
static/のようないくつかのディレクトリをこの書き換えから除外したいと思います。Cake RewriteRulesの前にこれを試してみました:
これまでのところ、リクエストは書き直されていませんが、一致してはならない正当なCakeリクエストも含め、すべての^(static|otherDir).*$
リクエストがスキップされています。
これらのルールのいくつかのバリエーションを試しましたが、希望どおりに機能させることができません。
security - HTTP_REFERER を使用してサイトの内部へのユーザー アクセスをブロックする
HttpServer は制御できますが、そこにある ApplicationServer や Java アプリケーションは制御できませんが、これらのアプリケーションの特定のページへの直接アクセスをブロックする必要があります。正確には、適切なサーブレットに対して直接 GET/POST HTTP 要求を発行するフォームへのアクセスをユーザーに自動化してほしくありません。
そこで、 の値に基づいてユーザーをブロックすることにしましたHTTP_REFERER
。結局のところ、ユーザーがサイト内を移動している場合、適切なHTTP_REFERER
. まあ、それは私が思ったことでした。
.htaccess ファイルに次のような書き換えルールを実装しました。
サイトをナビゲートしていないが、クエリ文字列を使用して「servlet1」または「servlet2」サーブレットに直接 GET 要求を発行するユーザーへのアクセスを禁止することを期待していました。しかし、正規表現(servlet1|servlet2)/.+\?.+
がまったく機能しなかったため、私の期待は突然終わりました。
その表現を に変更したときは本当にがっかりし(servlet1|servlet2)/.+
ました。サイトをナビゲートするかどうかに関係なく、ユーザーがブロックされるほどうまく機能しました。
それで、私の質問は次のとおりです。アプリケーションを変更するアクセス/権限/時間がない場合、特定のページへの直接アクセスを持つ「ロボット」を許可しないということをどのように達成できますか?
apache - mod_rewriteを使用してSSL仮想ホストを模倣しますか?
Apache 2.2とのSSL接続を介してURLを透過的に書き換える最良の方法は何ですか?
Apache 2は、SSL接続用の複数の名前ベースの仮想ホストをネイティブにサポートしていません。mod_rewriteがこれに役立つと聞いています。私はこのようなことをしたいと思います:
からサイトにアクセスできるようにサーバーを設定しました
https://secure.example.com/dbadmin
しかし、私はこれをhttps://dbadmin.example.comとして欲しいです
リライトルールがdbadmin.example.comをsecure.example.com/dbadminにリライトするように設定しますが、クライアントのアドレスバーにリライトを表示しません(つまり、クライアントには引き続きdbadmin.example.comが表示されます)。 )、https全体?
.htaccess - Mod-DocumentRootの背後にあるロードファイルを書き換えます
DocumentRootの背後にあるファイルを使用.htaccess
してポイントしています。mod_rewrite
私のフォルダ構造は次のようになります。
.htaccess
次の内容のファイルがwebrootにあります。
http://example.com/file.htmlにアクセスしようとすると、次のエラーが発生します。
要求されたURL/home/other_files/file.htmlがこのサーバーで見つかりませんでした。
DocumentRootの背後にあるファイルをロードすることさえ可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?
apache - mod_rewrite を使用して、あるファイル サフィックス タイプを別のタイプにエイリアスします。
これを十分に明確に説明できることを願っていますが、そうでない場合はお知らせください。明確にしようと思います。
現在、ColdFusion を使用してサイトを開発しており、サイトが PHP を使用しているように見せるために mod_rewrite ルールを設定しています。index.php に対する要求はすべて index.cfm によって処理されます (ルールは *.php を *.cfm にマップします)。
これはうまく機能します-これまでのところ、とても良いです。問題は、index.cfm (または任意の ColdFusion ページ) が直接要求された場合に 404 ステータス コードを返したいことです。
mod_rewrite を使用して *.cfm ファイルへのアクセスをブロックしようとすると、*.php への要求に対しても 404 が返されます。
.htaccessを使用するのではなく、Apache構成を変更する必要があるかもしれないと思います
apache - 1 つの特定のパスを除くすべてのリクエストをリダイレクトする mod_rewrite ルール
Apache 2.2 VirtualHost 宣言で mod_rewrite を使用して、自分のドメインへのすべてのリクエストを別のドメインにリダイレクトしようとしています。これには例外が 1 つあります。/audio
パスへのすべてのリクエストをリダイレクトしないでください。
これを行うために RewriteCond と RewriteRule を作成しましたが、正しくなく、その理由がわかりません。正規表現には文字列「/audio」の否定先読みが含まれていますが、何らかの理由で一致しません。定義は次のとおりです。
RewriteCond を次のように変更すると:
(つまり、スラッシュを否定先読み部分の外に置く) すると機能しますが、これの欠点は、末尾にスラッシュがない mydomain.net への要求がリダイレクトされないことです。
誰かが私が間違っていることを指摘できますか?
(注: 上記の RewriteRule ビットのドメインを囲む山かっこは、StackOverflow.com によって追加されています。実際のコードにはありません!)
ルールは次のとおりです。
ありがとう@mercutio - それは完全に理にかなっていますが、それでもうまくいかないようです。
http://mydomain.net/audio/something.mp3にリクエストしたときの mod_rewrite ログの内容は次のとおりです。
REQUEST_URI は で始まるので/audio
、RewriteRule は無視されると思います。
performance - Mod-Rewrite を使用した場合の悪影響はありますか?
mod-rewrite が達成する多くのポジティブなことがあることを私は知っています。しかし、マイナスはありますか?ルールが適切に記述されていない場合、問題が発生することは明らかです。しかし、大量のサイトがあり、常に mod-rewrite を使用している場合、パフォーマンスに重大な影響があるでしょうか? Google でいくつかのベンチマークを簡単に検索しましたが、あまり見つかりませんでした。
apache - Apache - 個々のモジュールおよび/またはすべてのモジュールを共有モジュールとしてビルドする方法
Mac OS X 10.5 では、最新バージョンの Apache 2.2.9 をダウンロードしました。通常の設定、作成、インストールのダンスの後、mod_rewrite なしで Apache をビルドしました。これは静的にリンクされておらず、モジュールも /modules フォルダーにビルドされていませんでした。
Apache と mod_rewrite をビルドするには、次の手順を実行する必要がありました。
- すべてのモジュールを共有モジュール (DSO) としてビルドするように Apache に指示して、Apache 構成からのロードを制御できるようにする方法はありますか?
- Apache と mod_rewrite DSO をビルドしたので、Apache をすべてビルドせずに別の共有モジュールをビルドするにはどうすればよいでしょうか?
(最後に Solaris で Apache (2.2.8) をビルドしたとき、デフォルトではすべてが共有モジュールとしてビルドされました。)
apache - Apache rewrite based on subdomain
I'm trying to redirect requests for a wildcard domain to a sub-directory.
ie. something.blah.example.com
--> blah.example.com/something
I don't know how to get the subdomain name to use in the rewrite rule.
Final Solution:
Or as pointed out by pilif
iis - IIS 7.0 に相当する mod_rewrite
IIS 7.0 に相当する mod_rewrite はありますか?
a) ほぼ完全
b) 実稼働環境に適している、つまり、実戦でテスト済み/信頼できる/安全
経験に基づくおすすめはありますか?