Htaccess İsteğe bağlı karakterler.?

3 Cevap php

Rağmen. Htaccess, ben. / Page.php? Var1 = var1 & var2 = var2'ye için / page/var1/var2 yönlendirmek istiyorum. Bu çok kolay ama ben bunu / page/var1 de (var2'yi kalmadan). / Page.php? Var1 = var1 yönlendirir yapmak istiyorum. Bu yapıyorum tek yoludur:

RewriteRule page/(.*)$ ./page.php?var1=$1
RewriteRule page/(.*)/(.*)$ ./page.php?var1=$1&var2=$2

Gördüğünüz gibi çok gereksiz, ve ben bu gibi çizgiler bir ton var, bu yüzden çok pis alır. "Isteğe bağlı" parçaları tanımlamak için herhangi bir şekilde?

3 Cevap

Ifadesi .* hem var1 eşleşir ve var1/var2, böylece ilk kuralı, hem uygulanır.

Yani ilk kural yalnızca maçlar olduğunu, bunu belirtmek zorunda var1. Bu [^/] ile . (herhangi bir karakter) yerine yapılabilir (haricinde herhangi bir karakter /). Yani bu deneyin:

RewriteRule ^page/([^/]+)$ ./page.php?var1=$1
RewriteRule ^page/([^/]+)/([^/]+)$ ./page.php?var1=$1&var2=$2

Edit Ayrıca tek kural bu yazabilirsiniz:

RewriteRule ^page/([^/]+)(/([^/]+))?$ ./page.php?var1=$1&var2=$3

mod_rewrite de böyle ağır kaldırma için uygun değildir, PHP uygulaması bırakıyorum.

 RewriteRule page/(.*)$ ./page.php?vars=$1

ve bir yere page.php başlangıcına yakın:

 <?php
 $vars = explode('/',$_GET['vars']);

Voila, sen vars bir dizi var; şimdi size app için isteğe bağlı / nelerin gerekli olduğunu görmek için orada bazı işlemleri yapmak ve buna göre tepki verebilir.

En iyi yaklaşım, sadece PHP komut dosyası üzerinde her şeyi teslim etmektir.

Ben daha ayrıntılı olarak bu kapsar friendly URLs nasıl yapılacağı ile ilgili bir makale yazdı.