2

現在、Kirbyでギャラリーを作成しており、効果的に 2 つのモードを持つアルバム ページを作成しています。1) ギャラリー リスト、すべてのアイテムを表示します。2) 単一の画像。私は次のGETように変数を渡しています:

/gallery/album-name?p=03.jpg

私が本当に欲しいのは、次のような URL です。

/gallery/album-name/03.jpg

.htaccessKirby は、次のように、既定のファイルで URL の書き換えを既に行っています。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]

/index.php/gallery/album-name?p=03.jpgこれは、この部分を削除してから URL を書き換えindex.phpます。

さて、次のような get 変数を持つ URL を単純に書き換えることができると思いました。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$1 [L]

しかし、それはうまくいかなかったようです。

私の質問はこれです:これはできますか?もしそうなら、GET変数はスクリプトで引き続き使用できますか?

どうもありがとう!


私の現在の完全な書き換えルール

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

#//www. vs //
RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

# block text files in the content folder from being accessed directly
RewriteRule ^content/(.*)\.(txt|md|mdown)$ error [R=301,L]

# block all files in the site folder from being accessed directly
RewriteRule ^site/(.*) error [R=301,L]

# block all files in the kirby folder from being accessed directly
RewriteRule ^kirby/(.*) error [R=301,L]

# make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]

# make gallery links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^gallery/(.*)/([A-Za-z0-9-]+\.jpg)?$ index.php?p=$2 [L]

# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]

</IfModule>

これはすべてで機能しますが、(たとえば) 次の URL で 404 が返されます。/gallery/my-gallery-name/01.jpg

4

2 に答える 2

1

これを試してください、うまくいきます

RewriteRule ^our-wedding/(.*)$ index.php?p=$1 [L]

これで、次の方法でアクセスできます

/gallery/our-wedding/03.jpg
于 2013-03-20T17:49:57.730 に答える
0

あなたRewriteRuleは2つの部分からなる正規表現を持っています

^(.*)/([A-Za-z0-9-]+)?$
  |    |
  $1   $2

$1はギャラリー部分で$2あり、オプションの画像部分です。必要に応じて、これらのパーツの1つまたは両方を使用できます。$2画像部分のみを使用する場合は、書き換えルールで使用する必要があります

RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$2 [L]

ただし、画像部分の正規表現は一致しませ03.jpg。これに一致させる場合は.、文字クラスにドットを含める[...]か、拡張子を追加する必要があります

[A-Za-z0-9-]+\.jpg
于 2013-03-20T21:29:46.930 に答える