質問

誰でもこのmod_rewriteルールが何をしているのか説明できますか?

ファイルにコメントを付けようとしていますが、コードは、私が思っていることの反対を述べているようです

# Enable rewriting of URLs
RewriteEngine on


# Allow specified file types to be accessed
# Thing to test = URL
# Condition = not starting with  
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)


# RewriteRule will only be performed if the preceeding RewriteCond is fulfilled
# Remove index.php from all URLs     
# Pattern = anything (0 or more of any character)
# Substitution = index.php + the rest of the URL    
RewriteRule ^(.*)$ /index.php/$1 [L]  
役に立ちましたか?

解決

^ = begin of line
( = begin group
.* = any character, any number of times
) = end group

2番目の部分の$ 1は、最初の部分のグループに置き換えられます。

これはSymfonyのルールですか?フロントコントローラーが解析してルーティングできるように、クエリ文字列全体をパラメーターとしてindex.php(フロントコントローラー)に渡すという考え方です。

他のヒント

ブラウザはサーバーにリクエストを送信します(mod_rewriteを使用しているため、Apache):

プロファイルの取得/編集

Apacheはこのリクエストを受け入れ、mod_rewriteを介してすべてのリクエストを渡すように設定したことを設定ファイルで確認します。したがって、文字列「profile / edit」をmod_rewriteに送信します。次に、mod_rewriteは指定されたルールを適用し、リクエストを(前の投稿で説明した方法で) 'index.php / profile / edit'に変換します。 mod_rewriteが完了した後、Apacheはリクエストの処理を続行し、「ああ、この男はファイルindex.phpをリクエストしています」と表示します。したがって、index.phpを解析して実行するphpインタープリターを呼び出し、引数として「/ profile / edit」を取得します。 PHPコード(この場合はCI)はこれらの引数を解析し、アプリケーションで適切なモジュールを呼び出す方法を知っています。

したがって、基本的には、urlがindex.phpを指定していない場合でも、常にindex.phpを呼び出す方法です。このように、index.phpはフロントコントローラーとして機能します。すべてのリクエストをアプリケーションの適切な場所にルーティングします。

URLがindex.phpまたはimagesまたはcssまたはjsまたはrobots.txtで始まっていない場合、文字列" /index.php/"プレフィックスが付きます。

index.phpはおそらく実行可能なphpアプリなので、index.phpはcgi環境から残りのURLを読み取ることができます。 (これは$ {PATH_INFO}に保存されます)

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