mod_rewriteがオンになっていることを確認してください。
ドキュメントルートのhtaccessファイルに、次のものを追加します(できれば、そこにある他のルールの上に)。
# Start converting query parameters to path
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/(.+?)\?[^\ ]+
RewriteCond %{QUERY_STRING} ^([^=]+)=([^&]+)&?(.*)$
RewriteRule ^([^/]+)/(.+)$ /$1/$2/%1/%2?%3 [L]
# done converting, redirect browser
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/(.+?)\?[^\ ]+
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^/]+)/(.+)$ /$1/$2 [R=301,L]
# internally rewrite paths to query strings
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)(.*) /$1/$2$5?$3=$4 [L,QSA]
# only someCompany/someEmployee left, pass it through
RewriteRule ^([^/]+)/([^/]+)/?$ /$1/$2 [L,R]
これはちょっと複雑に見えるでしょう。/something/somethingelse
ただし、最初の2つのルールは、指定されたリクエストがクエリ文字列(の後にすべて)を持つ2つのフォルダ(たとえば)に対するものであるかどうかをチェックし?
、名前と値のペアを照合してURIパスに構築します。クエリ文字列が空の場合、ブラウザを新しいURLにリダイレクトします(クエリ文字列なし)。これにより、誰かがブラウザにURLを入力したときに次のようになります。
http://www.site.com/someCompany/someEmployee?name=someName&age=someAge&keyN=someValueN
ブラウザがリダイレクトされるため、アドレスバーのURLは次のようになります。
http://www.site.com/someCompany/someEmployee/name/someName/age/someAge/keyN/someValueN/
次に、ルールの2番目のセットはパス階層を取り、最初の2つのフォルダーが何であれ(たとえば/fooCompany/barEmployee
)を保持し、各2つのフォルダーをクエリ文字列の名前と値のペアに変更します。基本的に最初の2つのルールの機能を逆にしますが、ブラウザーをリダイレクトしません。URIを内部的に書き換えるだけです。