.htaccess URL を複数パラメータ項目に書き換える

.htaccess URL を複数パラメータ項目に書き換える

私は人生の最後の 10 時間をこれに費やすだけで、ぐるぐる回っている状態なので、誰かが助けてくれるのではないかと期待しています。

特定の URL を次のようにロードします。

http://example.com/f/2011/image.png?attribute=small

このような形式の URL がヒットした場合、次のように書き換えてサーバーにヒットするようにします。

http://example.com/generate.php?f=2011/image.png&attribute=small

上記を踏まえて、私の質問は2つあります。

  1. 上記の要件を満たすために htaccess 内の URL を書き換えるにはどうすればよいでしょうか?
  2. 元の URL に属性クエリ文字列パラメータがない場合、htaccess 経由でサーバーにアクセスしたときに属性が false/空白などになることをどのように保証できますか?

答え1

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^f/(.*)$ generate.php?f=$1 [L,QSA]

これら 2 つはRewriteCond省略可能です。詳細情報:

書き換えルール

QSAフラグ

答え2

RewriteEngine On

RewriteRule ^([a-z]+)/([0-9]+)/image.png?attribute=small$ generate.php?f=$2/image.png&attribute=small&%{QUERY_STRING} [L]

答え3

うまくいく可能性がより高いものは次のとおりです。

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^([a-z]+)/([0-9]+)/image\.png$ /generate.php?f=$1 [QSA,L]

うまくいくかどうか教えてください

関連情報