2016-07-25 27 views
5

Htaccess, her nasılsa bir url sonunda otomatik olarak tüm izleri sarar ve sadece bir tane tutar. Örneğin http://localhost/api/param1/// içinHtaccess rewrite sondaki eğik çizgileri kaldırır

Bu durumda ve nasıl bu kurtulmak için neden http://localhost/api/param1/

söyler misiniz olur? (. *) Her şeyle eşleşmeli mi? Ama öyle değil. Dediğim gibi, http://localhost/api/param1///'a gidersek $_GET['url']param1/// olmalıdır, ancak param1/.

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
+0

'-d' &' dizin ve dosya konumuna yeniden -f'. Param1/'bir dizin olabilir,' param1 /// 'bir dizin olamaz. – Randy

+0

Hmm, yani bunun mümkün olmadığını mı söylüyorsunuz? Şimdi $ _SERVER ["REQUEST_URI"] değişkenini kullanıyorum ve bu işi yapıyor ama daha iyi bir çözüm olup olmadığını merak ediyorum. – miXo

+0

Bunu bir RewriteCond yönergesinde 'REQUEST_URI 'değişkenini kullanarak .htaccess içinde çözebilirsiniz, PHP $' da '$ _SERVER [' REQUEST_URI ']' süper küresel (muhtemelen yaptığınız gibi) kullanarak tartışmasız olarak Daha iyi) - belki de durumunuza bağlıdır. – MrWhite

cevap

3

Apache otomatik RewriteRule model tek çizgi birden fazla eğik şeritler.

Birden eğik çizgi yakalamak istiyorsanız

yerine RewriteCond kullanın:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} ^/(.*)$ 
RewriteRule^index.php?url=%1 [QSA,L] 
+1

Teşekkürler, bu çalışır. Ancak, URI'nin sadece. Utaccess dosyasının bulunduğu alt klasördeki URI ile değil, bu benim için kabul edilebilir. – miXo

+0

Evet '% {REQUEST_URI}', geçerli yoldan göreli olarak tam URI ile eşleşiyor. – anubhava

İlgili konular