2016-04-13 38 views
0

Apache2, Ubuntu,AliasMatch: tümü üzerinde Eş karma

Sadece 1 numaralı ihtiyaçları /etc/apache2/sites-available/default.conf ad verilmiş olması durumu dışında, 2 numaralı yapmaz. Başka içine 1 $ geçer ^/# ile herhangi url atlar bir AliasMatch regex gereken yeni/yol/$ 1

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

Aşağıdaki yaklaşımları denedim: İlk önce hem 1 hem de 2'yi yönlendirir çünkü (. *). İkincisi hiç çalışmıyor. Üçüncüsü de çalışmıyor, ama varsayılan olarak atlamak için alfa sayısal chars üzerinde eşleştirmeye çalışıyordum, aynı zamanda işe yaramaz. Hala url 1 uygun Diğer adı izin verirken, aynı

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

nasıl url 2 ihmal edersiniz? ^[^#]+$

Veya bu bir: ^.*?/[^#]+$

Oldukça anlaşılır konum

cevap

1

bu regex deneyin.

Tam olarak ne yakalamak istediğinize emin değilim. Çekim gruplarını nasıl kullanacağınızı biliyorsunuz, bu yüzden biraz ekleyebilirsiniz. Veya, bilmiyorsanız, normal ifadeden HERŞEY isterseniz, $0'u kullanabilirsiniz.

Düzenleme:

Dene: Bu son çizgiden sonra her şeyi kesmek olacaktır ^[^/]*/([^#]+)$

: ^[^/]*/([^#]+)/[^#/]+$

Ve bu birinci ve ikinci eğik çizgi arasında içerik alır: ^[^/]*/([^#/]+)/

+0

Ben çoğunluğunu anlıyorum; ama bir sebepten dolayı bu problemi çözemiyorum. Bir # ile başlamıyorsa, örnek 1'in URL'sindeki eğik çizgiden sonra her şeyi yakalamaya çalışıyorum. Önerilen normal ifadenizin çeşitli biçimlerini denemedim, boşuna. Bence oldukça yakın .. –

+0

@MattBunch Başka bir tane daha ekledim. Diğer ikisinden daha iyi ve daha hızlı olmalı ve testlerimde çalışıyor. (Ben regex lezzetiniz onunla çalışmak için yeterince standart olduğunu düşünüyorum.) – Laurel

+0

yakın. :) şimdi sorun, apache, URL'leri takma addır, ama /index.html ekleniyor ve regex tekrar çalıştırılıyor ve /index.html/index.html vb. ekleniyor. Bu yüzden sadece başka bir koşul eklememiz gerekiyor domain.com/ [this]/[ve bu değil]/[ya da bu]/[etc] arasında ne kaptığını ele alalım Sorunumu çözmek için en iyi yaklaşımın bu olmadığını merak ediyorum. Bu sitede test edildiğinde regex çalışır (Bilginize apache2 "Perl Uyumlu Normal İfade kelime" kullanıyor) : [link] (http://www.regexplanet.com/advanced/perl/index.html) –