変更する必要がありますが、.htaccess
理解できない2行があります。
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
これらの行をいつ使用する必要がありますか?
変更する必要がありますが、.htaccess
理解できない2行があります。
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
これらの行をいつ使用する必要がありますか?
回答:
完全なチュートリアルを行う場所ではありませんが、ここでは簡単に説明します。
RewriteCondは、基本的に「これがtrueの場合にのみ次のRewriteRuleを実行する」ことを意味します。!-l
経路は、要求が(リンクのためではないことが条件である!
手段がない、-l
手段リンク)
RewriteRuleは、要求が一致していることに行われた場合、その基本的な手段^(.+)$
(サーバのルート以外の任意のURLにマッチする)、のように書き換えることになるindex.php?url=$1
ための要求が意味しているolle
ように書き直すことになりますindex.php?url=olle
)。
QSA
は、元のURLで渡されたクエリ文字列がある場合、書き換えに追加されolle?p=1
ます(として書き換えられindex.php?url=olle&p=1
ます)。
L
ルールが一致した場合、これ以下のRewriteRulesを処理しないことを意味します。
これに関するより完全な情報については、上記のリンクをたどってください。リライトのサポートを理解するのは少し難しいかもしれませんが、Stackoverflowから学ぶべきかなりの数の例があります。
?
に&
それは不可能を区別すること、/page&foobar
VS /page?foobar
。どのように私は交換からQSAを停止することができます?
に&
?
次の条件に該当する
場合は、URLを書き換えます。要求されたファイル名がディレクトリでない場合は、
RewriteCond %{REQUEST_FILENAME} !-d
要求されたファイル名が存在する通常のファイルではない場合、
RewriteCond %{REQUEST_FILENAME} !-f
要求されたファイル名がシンボリックリンクでない場合、
RewriteCond %{REQUEST_FILENAME} !-l
次に、次の方法でURLを書き換えます。
リクエストファイル名全体を受け取り、それを "url"クエリパラメータの値としてindex.phpに提供します。元のURLからのクエリ文字列を追加のクエリパラメータ(QSA)として追加し、この.htaccessファイルの処理を停止します(L)。
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
もう一つの例:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
[QSA]フラグを使用すると、
/ pages / 123?one = two
にマップされます
/page.php?page=123&one=two