質問

.htaccessを介して別のファイルにクエリを送信することができますか? ちょっと説明しています:

index.php このようなすべてのページを処理します:

switch($page) {
    case 'index':
        require_once START . '/includes/pages/index.php';
    break;

    case 'another':
        require_once START . '/includes/pages/another.php';
    break;
       and so on...
.

.htaccess:

RewriteRule ^index$ index.php?page=index [L]
RewriteRule ^another$ index.php?page=another [L]
.

リンク(例えば。 localhost / 84ss7d41 ):

RewriteRule ^(.*)$ index.php?QUERY_STRING=$1 [L]
.

so / includes/pages/index.php

if ($_GET['QUERY_STRING']) {
$_SERVER['QUERY_STRING'] = $_GET['QUERY_STRING'];
$query_string = check_input($_SERVER['QUERY_STRING']);
    //checking/validating processing further...
.

このようなリンクの作り方 localhost / 84ss7d41 index.php を使わずに機能します。何かが発生した場合(誤って削除されたファイル)の場合、私の「プロジェクト」を別々にしようとしている(ファイルが誤って削除されました)。メインスクリプトなしでデータを確認/検証することは次のようなものです。

if (main project file index.php/ || /includes/pages/index.php doesn't exist) {
  check/validate data with reserve.php
}
.

役に立ちましたか?

解決

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*) /index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /reserve.php [L]
.

これは、既存のファイル(画像など)と一致しないすべての要求をindex.phpにリダイレクトします。そこで$_SERVER["REQUEST_URI"]を使用して動作を決定する方法を決定できます。これはフロントコントローラのパターンの実装です。>

さらに、index.phpがApacheによって見つからない場合、要求はreserve.php に転送されます。

しかし、このような冗長性の建物は必ずしもそうすることは必ずしもそうではありません(reverty.phpも欠けているのは何がありますか?)。index.phpに対する適切なアクセス制御を強制することはおそらくより良いアプローチです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top