(わずかに理論的な)物理ディスクレイアウトが次の場合:
\products\cameras\50d.jpg \products\cameras\20d.jpg \products\lenses\18-55.jpg \products\lenses\28-135.jpg \products.php
現時点では、次の形式のURLを持っています。
/products.php / / products.php/cameras / / products.php/cameras/50d
Products.phpでPATH_INFOを使用して、表示するものを決定します。
URLを書き換えて.phpを削除するのに苦労していますが、それでも静的リソースを取得できるようにしていますか?
これが機能することが判明し、依然として内部のリソースが機能することを許可します。
RewriteRule ^products([^\.]+)$ products.php$1
まず、これらのバックスラッシュはすべてスラッシュでなければなりません。 \
は、フォルダーの分離ではなく、特殊文字を「エスケープ」するために使用されます。
既に製品フォルダがある場合、products.php
をproducts
に書き換えることはできません。すべての画像を/images/cameras/50d.jpg
などの別のディレクトリに移動することをお勧めします。次に、これを行うことができます:
RewriteRule ^products products.php
それを使用して、変数を見つけるためにPHPで要求されたURLを解析する必要があります。これも使用できます:
RewriteRule ^products/([^/]+) products.php?cat=$1
RewriteRule ^products/([^/]+)/([^/]+) products.php?cat=$1&prod=$2
PHPスクリプトでは、$_GET['cat']
および$_GET['prod']
を介して必要な変数が自動的に取得されます。
編集:実際、あなたは正しいです。すべての画像が特定の拡張子に制限されている限り、両方を持つことが可能ですis。私はこれがうまくいくと思う:
RewriteRule ^products/(.+).jpg products/$1.jpg [L]
RewriteRule ^products/([^/]+) products.php?cat=$1
RewriteRule ^products/([^/]+)/([^/]+) products.php?cat=$1&prod=$2