Tüm PHP komut dosyalarını tek bir PHP sayfası (passthrough.php) üzerinden geçiren bir web sitesinde çalışıyorum.Mod_rewrite tekrarı
.htaccess dosyası bazı özel dizinleri alıp GET değişkenleri içine çevirmek gerekiyordu , bu nedenle kontrolör komut onlarla ne yapacağını bilir. Yani:
http://example.com/ajax/method.php
http://example.com/passthrough.php?path=method.php&mode=ajax
ve
http://example.com/ajax/json/method.php
vb http://example.com/passthrough.php?path=method.php&mode=ajax&output=json
Ve dönüşür. Bu benim .htaccess dosyasında ne var:
benim ikinci örnekteRewriteRule ajax/(.*)$ $1?mode=ajax [QSA]
RewriteRule (xml|json)/(.*)$ $2?output=$1 [QSA]
RewriteRule (.*)\.php$ passthrough.php?path=$1 [QSA]
RewriteRule passthrough.php - [L]
, mod_rewrite, ajax kuralı yürütür o passthrough.php kuralı yürütür gibi o görünüyor. Ardından, yeniden yazma işlemini yürütür. Şimdi ajax kuralı uymuyor, ancak çıktı kuralı uygulandı, böylece uygulandı ve URL en sonunda, aşağıdaki GET vars ile sonuçlanan passthrough.php kuralı tarafından yeniden yazıldı:
path: method. php/json/method.php/json/yöntem çıkışı: json modu: go birinde bütün URL'yi işlemek için yeniden yazma motoru almanın bir yolu vardır:
sorum ajax bu nedir? böylece url /ajax/json/method.php olarak gelir, /json/method.php?mode=ajax olur, sonra /method.php?mode=ajax & output = json, sonra /passthrough.php?mode=ajax & output = json & yol = yöntem, tek seferde mi? URL'yi ayrıştırmak, bir sonraki kurala göre değiştirmek, bir sonraki kurala göre değiştirmek vb. Yerine, eşleşen her kural için .htaccess ile bir kez çalışıyor gibi görünüyor. [PT] ve [S] 'i içeren birkaç bayrağı kullanmayı denedim, ancak çok iyi belgelenmemişler. Bu sorun, kodu doğrudan geçiş komut dosyasına ileten özel koşullar yazılarak çözülebilir, ancak bu iyi bir şekilde bozuk değil ve bana 'doğru' hissetmiyor.
Bu işlem kapanıyor - hatayı, tümüyle karıştırılan yönteme giden yolla kaldırır, ancak hem çıkış biçimini hem de ajax'ı yapmaz. Bunu kullanacağım, sonra kaçırdığı şeyi elde etmek için PHP'deki yolu ayrıştıracağım. Teşekkürler! – stdave