0

私のドメインexample.comでは、すべてのページファイルをルートのディレクトリ(たとえば、file )に配置したいと思います。したがって、たとえば、about.phpファイルディレクトリに配置し、ユーザーが次のURLでこのページにアクセスできるようにします:example.com/about
または、たとえば、ユーザーディレクトリをファイルディレクトリに配置し、 login.phpをその中に配置します。ユーザーが次のコマンドでアクセスできるようにします:example.com/user/login実際、URLから .phpとファイル
を削除したいと思います。

これらのファイルが存在しない場合は、ルートにindex.phpなどのデフォルトファイルをロードする必要があります。たとえば、URLexample.com/blablaはindex.phpにマップする必要があります

実際、私は上記の優先順位でmodrewriteで2つの条件を作成したいと思います。

注意:もちろん、 about.phpのようなファイルで$_GETのような変数を使用できるはずです。

更新:要約すると、このロジックで動作するはずです:

if the URI isn't a file or directory{
    if file/URI.php is a file
        load file/URI.php
    else
        load index.php
}

一部の団体が使用するための答えを出しましたErrorDocument 404 index.phpが、それは本当に悪い考えです(そして今彼の答えを削除しました!)

ご協力いただきありがとうございます...

4

1 に答える 1

0

条件付きの書き換え(ページが存在する場合)は、可能であれば、悪くて複雑な考えのように聞こえます。

私はすべてを書き直し/index.php、そこからすべてを制御します。

  • URLのコンポーネントが既存のページにつながる場合は、そのコンテンツを使用/インクルードします。
  • 有効なページが見つからない場合は、元のインデックスコンテンツを提示してください。

状況に応じたリダイレクトルールの例:

RewriteEngine on
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^.*$ /index.php?id=$1 [QSA,L]

要求されたパスをに含め、元のクエリ文字列(フラグ)idから変数を追加します。QSA

/user/loginあなたの例のより具体的なものは次のとおりです。

RewriteRule ^([\w-]+)/([\w-]+)$ /index.php?path=$1&file=$2 [QSA,L]
  • [\ w-+]:任意の単語文字(を含む_)と-
于 2012-12-15T21:53:29.027 に答える