質問のルールが期待どおりに機能しない理由を確認しませんでしたが、代わりにこれを試すことができます。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?
RewriteRule .* edit.php?key1=%1&key2=%2&key3=%3&key4=%4 [L]
静かにマップ:
http://example.com/val1/
まで
http://example.com/val1/val2/val3/val4/
末尾のスラッシュの有無にかかわらず
に:
http://example.com/edit.php?key1=val1&key2=val2&key3=val3&key4=val4
受信URLで渡される値の最大数valN
は4です。最小数は1です。ただし、その範囲はルールを変更して調整できます。
着信URLに存在しないものvalN
がある場合、置換URLに追加されたクエリの対応するキーと値のペアの値は空になります。
ただし、すべてが着信URLによって渡されない固定文字列であるため、key
は常にクエリに存在します。keys
このルールセットはテストされ、機能しているため、競合する可能性のある他のルールなしでテストする必要があります。私は質問の他のルールをチェックしなかったし、それらが機能するかどうか、またはそれらがこのルールに影響を与える可能性があるかどうかを言うことはできません。それは質問の一部ではありませんでした。
アップデート
edit.phpへのリダイレクト:
edit.phpへのマッピングは、URLパスに3つまたは4つのフォルダーがある場合にのみ必要です。
変更されたルールセットは次のとおりです。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !edit\.php [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/?([^/]*)?/?$ [NC]
RewriteRule .* edit.php?key1=%1&key2=%2&key3=%3&key4=%4 [L,QSA]
静かにマップ:
http://example.com/val1/val2/val3/
まで
http://example.com/val1/val2/val3/val4/
末尾のスラッシュの有無にかかわらず
に:
http://example.com/edit.php?key1=val1&key2=val2&key3=val3&key4=val4
着信URLで渡されるvalN値の最大数は4です。最小数は3です。
content.phpへのリダイレクト:
content.phpへのマッピングは、フォルダーの数が1または2の場合にのみ行われることを除いて、前のものと非常に似ています。
したがって、ルールセットは基本的に同じですが、正規表現グループは少なくなります。
RewriteCond %{REQUEST_URI} !content\.php [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/?([^/]*)?/?$ [NC]
RewriteRule .* content.php?key1=%1&key2=%2 [L,QSA]
静かにマップ:
http://example.com/val1/
まで
http://example.com/val1/val2/
末尾のスラッシュの有無にかかわらず
に:
http://example.com/content.php?key1=val1&key2=val2
着信URLで渡されるvalN値の最大数は2です。最小数は1です。
完全なルールセットは次のようになります。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !edit\.php [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/?([^/]*)?/?$ [NC]
RewriteRule .* edit.php?key1=%1&key2=%2&key3=%3&key4=%4 [L,QSA]
RewriteCond %{REQUEST_URI} !content\.php [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/?([^/]*)?/?$ [NC]
RewriteRule .* content.php?key1=%1&key2=%2 [L,QSA]
私があなたが欲しいものを理解したことを願っています。