. Htaccess PHP kodu çalıştırmak?

4 Cevap php

Ben bir PHP işlevi url geçmek ve yeni hedef ne olması gerektiğini anlatmak için bir değer almak için gereken bir yeniden yazma söylüyorlar? Bunu yapmak için bir yolu var mı?

Teşekkürler.

UPDATE:

Teşekkürler şimdiye kadar beyler .. ben hala sorun yaşıyorum ama sana kod göstereceğim:

. Htaccess

#I got the file path by echoing DOCUMENT_ROOT and added the rest.
RewriteMap fixurl prg:/var/www/vhosts/mydomain.com/httpsdocs/domain_prototype/code_base/url_handler.php

RewriteEngine On
RewriteRule (.*) ${fixurl:$1} [PT]

PHP:

set_time_limit(0); # forever program!
$keyboard = fopen("php://stdin","r");
while (1) {
        $line = trim(fgets($keyboard));
        print "www.google.com\n";  # <-- just test to see if working.
}

However I am getting a 500 Internal Server Error I am not sure if there is an error in my . Htaccess or in my PHP?

4 Cevap

Bir RewriteMap denen bir şey var.

Size yeniden yazmak için URL dönecektir çalıştırılabilir bir betik çağırabilir.

Daha fazla bilgi ve örnekler için bu makaleyi Giriş (Perl, ancak başka bir dilde tamamen geçerlidir):

http://www.onlamp.com/pub/a/apache/2005/04/28/apacheckbk.html

Uyarılar Özeti:

  • Bir okuma STDIN'den döngü çalıştırmak gerekir (yani, yapamam çıkış bir URL aldıktan sonra)
  • Bir sondaki yeni satır İLE için yeniden yazmak için URL'yi yazdırmak gerekir
  • Kullanıcı tarafından okunabilir ve çalıştırılabilir olmalıdır Apache olarak çalışır

Bu harita oluşturmak için bir yoldur

RewriteMap fixurl prg:/usr/local/scripts/fixit.php

Ve şimdi bir RewriteRule kullanabilirsiniz:

RewriteEngine On
RewriteRule (.*) ${fixurl:$1}

EDIT: Internal Server Error Hakkında. En muhtemel nedeni, RewriteMap ne yazık ki,. Htaccess olarak kullanılamaz Bamya söz budur. Sen. Htaccess bir RewriteRule kullanabilirsiniz, ancak sunucu genelinde veya sanal konak config oluşturabilirsiniz. Emin olmak için, hata günlüğünü denetleyin.

Yani, tek çözüm, sadece PHP /. Htaccess kontroller yapar ve Konum başlığını kullanarak yönlendiren belirli bir PHP programı için her şeyi yeniden yazmak olacaktır. Gibi bir şey:

RewriteRule (.*) proxy.php?args=$1 [QSA]

Daha sonra, içinde proxy.php

<?php
      $url = get_proper_destination($QUERY_STRING); #args will have the URI path, 
                                                    #and, via QSA you will have
                                                    #the original query string
      header("Location: $url");
?>

Evet; Eğer Harici Kurgulaması Program çeşitli bir RewriteMap, gerekir.

Ne yapacağını PHP sayfası URL'sini geçirmek ve ardından PHP başlıkları seçeneğini kullanarak son yönlendirme yapmaktır.

header("Location: new-page.php");

Bunu yönlendirmek istemedim, ayrıca bir istediğiniz sayfanın içerir yapabilirdi. Ben bu biraz daha esnek RewriteMap kullanmaktan daha olduğunu bulmak.

Bu yardımcı olur umarım!