1

クリーン URL のコーディングは初めてですが、クリーン URL がどのように機能するかについての知識に基づいた推測は正しかったです。

私の最初のステップは、サーバーで mod_rewrite が有効になっているかどうかをテストするための互換性ツールを作成することでした。必要な 3 つのファイル (PHP ツール ファイル、.htaccess ファイル、および書き換えるファイル URL) を正常に作成できました。

基本的な RewriteRule が用意されており、書き換えられた URL にアクセスすると、正常にリダイレクトされます。ただし、PHP の INCLUDE/REQUIRE または FILE_EXISTS 関数を使用して、書き換えられた URL を参照しようとしても失敗します。これは不可能ですか、それとも間違った方法で行っていますか?

必要に応じて喜んでコードを投稿します (私はスマートフォンからこれを書いています) が、今のところ、それが可能かどうか、そして可能であればそれを達成するための最良の方法は何かを判断しようとしています.

.htaccess:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule .*rewrite_test\.php rewrite.php [nc]
</IfModule>

rewrite.php:

<?php
  $mod_rewrite = TRUE;
  echo "test";
?>

tester.php:

<?php
  // Check if APACHE MOD_REWRITE is enabled for clean URLs
  $mod_rewrite = file_exists('rewrite_test.php');

  echo ($mod_rewrite ? "TRUE" : "FALSE");
?>

または tester.php コードの代替:

<?php
  // Check if APACHE MOD_REWRITE is enabled for clean URLs
  $mod_rewrite = FALSE;
  include_once('rewrite_test.php');
  echo $mod_rewrite;
?>
4

2 に答える 2

2

完全な URLを有効にして指定しない限り、 Apache Rewrite Rules は に影響を与えませんincluderequireまたは、それらはサーバー上のパスを使用しているため、URL ではありません。file_existsallow_url_fopen

編集:
サーバーで が利用可能 かどうかを確認したいだけの場合mod_rewriteは、はるかに簡単です: を使用しますapache-get-modules()。次のように簡単です。

$mod_rewrite = (
        function_exists('apache_get_modules') &&
        in_array('mod_rewrite', apache_get_modules())
    );
于 2012-06-20T12:57:08.750 に答える
0

.htaccess は Hypertext Access の略で、HTTP リクエストのみに影響し、ローカル サーバー リクエストには影響しません。Oezi が述べたように、cURL または allow_url_fopen フラグを使用して、リクエストを真の HTTP リクエストに変えることができますが、これは、含めたいページへの非常に遠回りなルートを取っていることを意味するため、お勧めしません。問題ではない .htaccess 構成をテストするためだけの場合、またはブラウザーで URL を開くことができます。

于 2012-06-20T13:12:05.393 に答える