2016-04-13 4 views
0

Apache2の、Ubuntuは、エイリアスするAliasMatch:ハッシュ

のみ数1ニーズ/etc/apache2/sites-available/default.conf、数2でない場合を除いて、すべてのマッチング は、私は他に$ 1渡し、^ /#と任意のURLを省略しAliasMatch正規表現を必要とする新しい/パス/ $ 1

  1. url.com/some_dir
url.com/#/some_dir

私は次のアプローチを試しました。最初は、(。*)のために1と2の両方をリダイレクトします。 2番目のものはまったく動作しません。 3つ目はどちらも動作しませんが、デフォルトで#を省略するように英数字の文字にマッチさせようとしていましたが、これも機能しません。まだURL 1は、適当なエイリアスをすることが可能にしながら

AliasMatch "(?i)^/(.*)$" "/new/path/$1" 
AliasMatch "(?i)^((?!#).)*$" "/new/path/$1" 
AliasMatch "^/[a-zA-Z0-9_-]+$" "/new/path/$1" 

にはどうすればURL 2を省略していますか?

答えて

1

は、この正規表現を試してみてください:^[^#]+$

またはこの1:^.*?/[^#]+$

彼らはかなり理解しやすいです。

私は正確にあなたがキャプチャしたいと思っているか分からない。あなたはキャプチャグループを使う方法を知っているようですので、いくつか追加することができます。または、あなたが知らなかった場合、正規表現からすべてを使いたい場合は、$0を使うことができます。

編集:

試してみてください。^[^/]*/([^#]+)$

この1つは、最後のスラッシュの後にすべて切り落とすます:^[^/]*/([^#]+)/[^#/]+$

をそして、この1つは第一および第二のスラッシュの間でコンテンツを取得します:^[^/]*/([^#/]+)/

+0

私はその大半を理解しています。何らかの理由で私はちょうどこの問題を解消することはできません。私は#1で始まらない場合、例1のURLのスラッシュの後にすべてをキャプチャしようとしています。 私はあなたの提案正規表現の様々な形式を試してみました。私はそれがかなり近いと思う.. –

+0

@MattBunch私は別のものを追加しました。それは他の2つより優れているはずです。私のテストではうまくいきます。 (私はあなたの正規表現のフレーバーはそれで動作するのに十分な標準だと思う) – Laurel

+0

。 :)今問題は、apacheのURLのエイリアスですが、/index.htmlを追加してから正規表現が再度実行され、/index.html/index.htmlなどが追加されるため、別の条件を追加する必要があるようです これは私の問題を解決する最善の方法ではないのだろうかと思います。 (FYI apache2は "Perl Compatible Regular Expression Vocabulary"を使用しています) 正規表現はこのサイトでテストしたときに動作します:[link](http://www.regexplanet.com/advanced/perl/index.html) –