0

このようなmod_rewriteルールを作成します

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME}\.php !-f 
RewriteRule ^(.*)$ ./page.php?key=$1 

できます!しかし、私はこれをしたい:

www.site.com/var1.var2.var3 

(変数はポイントで区切られています)-または_で区切られています問題はありませんが、ポイントを入れても機能しないのはなぜですか?

4

1 に答える 1

0

私はあなたがこのようなルールを試していると思います

RewriteRule ^(.*).(.*).(.*)$ ./page.php?key=$1&key2=$2&key3=$3

ただし、ピリオドとして解釈したいドットをエスケープすることを忘れないでください。これを修正する方法はたくさんありますが、.htaccessファイルを初めて使用する場合は、次の簡単な方法があります。

RewriteEngine  On
RewriteBase    /

# Skip existing files or directories
RewriteCond %{SCRIPT_FILENAME}     -d [OR] 
RewriteCond %{SCRIPT_FILENAME}     -f
RewriteRule ^                      -  [L]

# Add default PHP extension when appropriate
RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule ^.*                    $0.php  [L]

# Pick up 1,2 and 3 parameter versions 
RewriteRule ^(.*?)\.^(.*?)\.(.*)$ page.php?key=$1&key2=$2&key3=$3 [QSA,L]
RewriteRule ^(.*?)\.(.*?)$        page.php?key=$11&key2=$2        [QSA,L]
RewriteRule ^(.*?)\.$             page.php?key=$1                 [QSA,L]

ノート:

  • 最初のルールは常に一致するパターンとして「^」を使用し、「-」はそれを置き換えないことを意味します。
  • 2番目は$0を使用します。これは、一致パターン全体を意味します
  • ルール3-5は3,2,1パラメータオプションと一致します
  • [L](最後の)フラグは、残りのルールをスキップすることを意味します
  • 他のパラメータを使用する場合は、QSAフラグが必要になります。

存在チェックインをに分割する理由は、CSSや画像(PNG / GIF / PNG)ファイルなどのファイルとアプリケーション構文を処理する必要があるためです。

于 2012-07-07T16:58:13.780 に答える