Nasıl hızlı bir şekilde Çerçevesi olmadan PHP kullanarak bir sığınakta sitesi kurabilirsiniz?

3 Cevap php

Ben hızlı bir PHP Framework öğrenmeden PHP kullanarak bir sığınakta site kurmak istiyorum. Ben Apache veya Nginx kullanarak tek kural, tek bir .htaccess dosyasını kullanmak istiyorum, bu yüzden easyli benim kod değiştirmeden web sunucusu değiştirebilirsiniz.

Yani tek bir PHP dosyası için tüm istekleri yönlendirmek istiyor ve bu dosya RESTful-işleme önemser ve sağ PHP dosyası diyoruz.

Örnek olarak:

  1. Kullanıcı isteği http://mysite.com/test
  2. Sunucu rest.php tüm istekleri gönderir
  3. rest.php çağrı test.php (belki bir sorgu dizesi ile).

Bu yapılabilir ise, is there a free PHP-script that works like my rest.php? or how can I do this PHP-script?

3 Cevap

Apache Mod Rewrite kullanarak:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test$ rest.php [nc]

Evet, 404 Redirect rest.php adında bir sayfa yapmak. $url = $_SERVER['REQUEST_URI']; url incelemek için kullanın. In rest.php istediğiniz yere yönlendirebilirsiniz.

Bu, yalnızca (.htaccess dosyasındaki 404) bir kural gerektirir.

Dikkatli olmak ve emin sayfa 404 ile (örneğin mysite.com/test1 bir test1.php yok) hataları istenirse kendinizi bir döngü içinde yakalanmış alamadım emin olmak gerekir.

Drupal bunu yapar yoldan biraz değiştirilmiş. Bu rest.php her şeyi yönlendirir ve size uygun eylemi yapmak için $ _GET ['q'] içine orijinal istenen URL koyar. Sen apache config koymak, ya da. Htaccess de olabilir. Emin mod_rewrite etkin olduğundan emin olun.

RewriteEngine on
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ rest.php?q=$1 [L,QSA]

Eğer yapmak istediğiniz tüm istenen dosyayı içerir ise, böyle bir şey yapabilirsiniz

<?php
  if (!empty($_GET['q'])) {
    $source = $_GET['q'] . '.php';
    if (is_file($source)) {
      include $source;
    } else {
      echo "Source missing.";
    }
  }
?>

Gerçekten Ancak, bunu yapmak istemiyorum; Birisi '/.. /.. /.. / etc / passwd' talep etmek olsaydı, örneğin, size istemediğiniz bir şey hizmet sonunda olabilir.

Daha bunun gibi bir şey daha güvenli, sanırım.

 <?php
  if (!empty($_GET['q'])) {
    $request = $_GET['q'];
    switch ($request) {
      case 'test1':
        include 'test1.php';
        break;
      default:
        echo 'Unrecognised request.';
        break;
    }
  }
  ?>