2016-04-17 11 views
2

私は比較的簡単な問題で助けを得ることができると期待しています:非常に単純なhtaccessをPHPルータに変換していますか?

私は大学のためのPHPアプリケーションをプログラミングしていました。私が考えているのは、 Apacheではありません。サーバーはphp -S(PHP組み込みサーバー)です。

は、だから私のアプリは何か、私は.htaccessにうまく働いていた、ある特定のファイルへのURIのルーティングに完全に依存しています:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ api.1.0.php [L,QSA] 

私は、通常のPHPサーバを使用しているときに、ルータのファイルを使用することができることを承知していますが、誰も私がこの.htaccessファイルをPHPルーターに '変換'するのを助けることができますか?

私は正しい方向に私を指すことができる誰にも先ずありがとう!

編集:この質問を投稿するより良い方法は、誰でも私が.htaccessファイルが何をしているのか理解するのを助けることができますか?そして、私はそれをかなり簡単にPHPに変換することができました。

答えて

3

これは簡単です。このようrouter.php使用します、私はこの質問を置くのは良い方法だろうと思い

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ api.1.0.php [L,QSA] 

誰でも助けることができる:上記のコード

<?php 
    $path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); 
    if (!file_exists($path)) 
     include "api.1.0.php"; 
    else 
     return false; 
?> 

をあなたが持っている.htaccessファイルの交換であります.htaccessのファイルは何を理解していますか?

  1. RewriteEngine On - Apache2の書き換えエンジンモジュールを起動します。ファイルは、パス上に存在しない場合は
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. は - - ディレクトリは、パス上
  4. RewriteRule ^(.*)$ api.1.0.php [L,QSA]存在しない場合は -
  5. RewriteCond %{REQUEST_FILENAME} !-fあなたが与えるものは何でも、それを果たしますapi.1.0.phpにクエリ文字列を入力し、ここに書き換えルールを停止します。

このコードは、この方法のために働く:あなたの助けのための

php -S localhost:80 router.php 
+1

非常にありがとうを!あなたは間違いなく私に正しい道を教えてくれました。 htaccess(parse_url)に関連してコードの最初の行を説明してもらえますか? – Ollie

+1

@Ollieはい、間違いありません。最初の行は、ブラウザーからリクエストURLを取得します。これは、ブラウザーのアドレスバーに表示されているドメインを離れる方法です。要求されたのは 'PATH'です。 –

+0

@Ollie 'http:// localhost/users/123/ollie/posts/5'のようなURLを与えると、' $ path'は '/ users/123/ollie/posts/5'を含みます。 :) –

関連する問題