1

動的に生成されたphpファイルの静的htmlファイルを作成するキャッシュプログラムがあります。私は現在、phpを使用して、キャッシュされたバージョンが存在するかどうかを確認しています。存在する場合は、それを提供してphpを終了します。この質問(http://stackoverflow.com/questions/5612735/using-mod-rewrite-to-view-cached-version-from-usual-url)のように、これは時間の無駄だと思います。ただし、私は約5,000ページあるので、それらすべてを同じ/cache/ディレクトリに配置したくありません。代わりに配置したい

/a-web-url/ in /cache/a/a-web-url.html.gz

/this-is-another-url/ in /cache/t/this-is-another-url.html.gz

私は現在一緒に働いています

RewriteRule ^([A-Za-z0-9-_/\.]+)/$ /cache/$1

ただし、これはすべてが同じディレクトリにあることを前提としています。私はそれらをサブディレクトリに分割することを望みます。ありがとう。

また、すべてのファイルが.html.gzで終わることに注意してください

4

3 に答える 3

2

ルールを使用する

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?cache/ [NC]
RewriteRule ^/?(.)(.*?)/?$ /cache/${lc:$1}/${lc:$1}${lc:$2}.html.gz [L]
于 2012-11-06T00:21:25.837 に答える
0

このようなものが機能するはずです:

RewriteRule ^([a-z])([A-Za-z0-9-_/\.]+)/$ /cache/$1/$1$2
于 2012-11-06T00:11:57.380 に答える
0

複数の大文字、小文字、ダッシュ、アンダースコアを現在のパターンと一致させています。これを変更して、同じ文字クラスを使用して最初の文字だけに一致させ、次に修飾子を使用して残りを一致させ、最初の文字と残りの文字の逆参照を+使用して書き直すことができます。を使用すると、で始まるURLと一致しなくなります。$1$2(!?cache/)/cache/

RewriteRule ^(!?cache/)([A-Za-z0-9-_/\.])([A-Za-z0-9-_/\.]+)/$ /cache/$1/$1$2 [L]

このルールはここでテストできます:http://htaccess.madewithlove.be/

最初の文字を小文字にしたい場合は、構成に追加RewriteMap tolower int:tolowerして、最初の文字<VirtualHost>に使用できます${tolower:$1}

于 2012-11-06T00:14:10.457 に答える