問題タブ [mod-alias]
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.
.htaccess - .htaccessを使用してHTTP_HOSTを含むURLにリダイレクトするにはどうすればよいですか?
問題
いくつかの短い便利なURLをより長い実際のURLにリダイレクトする必要があります。問題のサイトは、一連のサブドメインを使用して、一連の開発バージョンまたはライブバージョンを識別します。
特定のリクエストのリダイレクト先のURLにHTTP_HOSTを含めて、ホストごとにカスタムの.htaccessファイルを作成する必要がないようにしたいと思います。
ホスト固有の例(.htaccessファイルから抜粋)
この例は、dev01.example.comで実行されている開発バージョンで正常に機能します。dev02.example.comで実行されている開発バージョンのメインの.htaccessファイルで同じ行を使用すると、間違った場所にリダイレクトされることになります。
理想的なルール(正しい構文がわからない)
このルールは機能せず、私が達成したいことの例としてのみ機能します。次に、多くの異なるホストでまったく同じルールを使用して、正しい結果を得ることができます。
答え?
- これはmod_aliasで実行できますか、それともより複雑なmod_rewriteが必要ですか?
- これは、mod_aliasまたはmod_rewriteを使用してどのように実現できますか?可能であれば、mod_aliasソリューションをお勧めします。
明確化
私は同じサーバーにとどまりません。私は…したい:
- http:// example.com / terms /-> http://support。example.com / articles / terms /
- https://secure。example.com / terms /-> http://support。example.com / articles / terms /
- http:// dev.example.com / terms /-> http://support。dev.example.com / articles / terms /
- https://secure。dev.example.com / terms /-> http://support。dev.example.com / articles / terms /
example.comとdev.example.comの両方の.htaccessファイルで同じルールを使用できるようにしたいと思います。この状況では、リクエストのリダイレクト先のURLで文字通り指定するのではなく、HTTP_HOSTを変数として参照できるようにする必要があります。
提案されているようにHTTP_HOSTパラメーターを調査しますが、実際の例を期待していました。
apache - ローカルディレクトリが存在しない場合にのみApacheでエイリアスを使用しますか?
再販業者の Web ホストを実行しており、その中にあるすべてのサイトの特定のディレクトリにエイリアスを設定しています。これはすべて WHM/Cpanel を介して行われているため、質問が複雑になる可能性があります。
すべてのホストが、サーバー上の共有の場所を介して「/concrete」ディレクトリを実行するようにします。これは、WHM の apache インクルード エディタに「Alias /concrete/ "/usr/local/share/concrete5/concrete-latest/concrete/"」を追加することで正常に機能しています。
ただし、ローカルのconcrete/ディレクトリが仮想ホストの特定のWebルート内に存在する場合は、グローバルに「/concrete」を使用するよりもむしろそれを使用します。また、WHM 内で仮想ホストのコンテキストでこのエイリアスの変更を行うことができれば素晴らしいことです (そして、ファイルをハッキングせずに WHM の仮想ホスト セクションを変更する優れた方法は見つかりませんでした。ハッキングすることになっています。)
考え?
apache - mod_rewrite または mod_alias?
私はサーバーを持っています。その httpd.conf には、すでにいくつかの " RedirectMatch 永久" ディレクティブが含まれています。
私は mod_alias にあまり詳しくありません。mod_rewrite しか使用したことがありません。
基本的な違いは何ですか?ルールの処理を停止するための "L" フラグが mod_alias に表示されません。
あるサブドメインから別のサブドメインへのリダイレクトのベスト プラクティスには、どれを使用すればよいですか?
両方を同時に使用できますか? どちらが優先されるかは明らかですか?
.htaccess - htaccess を使用して 1 つを除くすべてのサブディレクトリをリダイレクトする方法
.htaccess をいじってからしばらく経ちましたが、これを正しく理解できないようです。example.com などのサイトがあり、example.com/* を example.com/collector.html にリダイレクトする必要があります。ただし、サブディレクトリ example.com/special の下の URLを除き、引き続き作業を行いたいと考えています。
例えば:
- example.com/page.html は example.com/collector.html にリダイレクトする必要があります
- example.com/foo/bar は example.com/collector.html にリダイレクトする必要があります
- example.com/special/page.html はリダイレクトしないでください
私は次のようなことを考えていたでしょう
トリックを行うでしょうが、私が望むようには機能しないようです。
apache - Redirect 301 Transfer to New Domain 出力 URL が見にくい
ブログを新しいドメインに移動します。.htaccess を介してこれを実行しようとしています。リダイレクトは問題ありませんが、出力 URL は「醜い」です
古いドメインの .htaccess ファイルの例:
クリックすると
リダイレクト先は
何をすべきか提案してください
ありがとう
regex - mod_alias AliasMatch Regex - フォルダー内の 2 つのパターン以外のすべてに一致しますか?
AliasMatch を使用して、2 つ (またはそれ以上) の特定の正規表現パターンを除いて、フォルダー内のすべてのエイリアスを作成したいと考えています。
たとえば、次の AliasMatch は、'content' フォルダー内のすべてのエイリアスを作成します。
ただし、上記のエイリアスを一致させたくない正規表現パターンが 2 つあります。たとえば、次のようになります。
NOT (!) 文字を使用してパターンを否定できることは知っていますが、ここでの使用方法や、AliasMatch で複数のパターンを否定する方法がわかりません。
これはどのように行うことができますか?
apache - Apache - 301 pdf をスペース付きの pdf にリダイレクト (バイナリ ファイル)
私が欲しいもの:
/file_new.pdf を /file new.pdf に 301 リダイレクトするには ( file と new の間の %20 別名スペース)
私はそれを知っています:
- このスレッドの解決策を使用して、mod_rewrite を使用する RewriteRule 301 に頼ることができます: URL にスペースを含む @ mod_rewrite
- スペースを含まないようにファイルの名前を変更し、それらをダッシュ/アンダースコアに置き換えることができます
しかし、私は個人的にこれをどのように行うかについて興味があります。これが私がこれまでに持っているものです:
configtest を呼び出すと、conf ファイル パーサーがエラーをスローします。
Redirect は 2 つまたは 3 つの引数、オプションのステータス、リダイレクトするドキュメント、および宛先 URL を取ります。
編集: mod_rewrite メソッドも Redirect 301 メソッドも機能しているようです。おそらく、ファイルが実際にその場所に存在するために何らかの理由で適用されていないためです。
rewrite.log では、パターンをそれぞれの uri / http リクエストに一致させようとします。mod_alias/mod_rewrite に到達する前に、何かが制御されていると思います。
要約すると、ブラウザの file_new.pdf に直接移動し、301 ではありません。私はそれを確信してalias
おりrewrite
、有効になっています。私のApacheのバージョンは2.2です。
apache - mod_aliased ディレクトリ内のファイルの存在に基づく mod_rewrite は不可能ですか?
.htaccess ファイルで次のようなことをしようとしています:
したがって、理論的には非常に簡単です。
- /assets/ で始まる URL から画像が要求されます
- Apacheはファイルの存在をチェックします
- 見つかった場合、ファイルが提供されます
- そうでない場合は、代わりにスクリプトが実行されます
これは他の場所では正常に機能していますが、エイリアスとして含まれているディレクトリで使用しようとしたのはこれが初めてです。私が理解しているように、Mod RewriteはMod Aliasの前に実行されるため、これは確実に機能しなくなります(実際、私のAlias行はapache confにあり、残りは.htaccessにあります)。
Mod Rewrite に Aliased ディレクトリを認識させる方法はありますか?
Alias 行を Rewrite 行に変更することはできますか?
regex - mod_aliasサブディレクトリの置換
私はRewriteMatchを使用して、URLの他のすべての部分を同じに保ちながら、すべてのトラフィックをsubdir1からsubdir2にリダイレクトしています。たとえば、
にリダイレクトします
私はこのルールを使用しています:
これはURLで機能します
ただし、URLが長いページは対象外です。だからそれは一致していません
リダイレクトする必要があります
何かアイデアがあればありがたいです。
spaces - mod_aliasのリダイレクトディレクティブのURLパスでスペースを使用するにはどうすればよいですか?
リンクテキストに続いて、スペースを含むファイルパスにも問題があります。フルパスを引用符で囲むように言われましたが、それでうまくいくはずですが、ウェブマスターツールのエラーログでこのページが見つからないものとしてマークアップされ続けています。
まだ私に404を与えます。
ありがとうマーティン