この質問は重複している可能性があります。しかし、私の解決策は見つけられませんでした。 私は1つのレベルパラメータと2つのレベルパラメータを持つURLを書き直したいと思います。最初のパラメータはp
であり、第二はsp
複数のパラメータに対して.htaccessでURLを書き換えます。
www.domain.com/home
でwww.domain.com/index.php?p=home
と www.domain.com/projects/99
を指している必要があり、私は.htaccessの中でどのように行うのですwww.domain.com/index.php?p=projects&sp=99
を指している必要がありますか?
現在、私のhtaccessファイルは、このhtaccessファイルと
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1
RewriteRule ^([^/]*)/([^/]*)\$ index.php?p=$1&sp=$2 [L]
問題は、それが正しく1つのレベルのURLを指していることである、としてfollowesです。すなわち、www.domain.com/home。しかし、2つのレベルのURLではありません。すなわち、 www.domain.com/projects/99
おかげでたくさんの友人。 – Firnas
ありがとうございました。上記の変更の後、正常に動作しています。しかし、私が第2レベルのURLに行くと、javascriptのsrc、cssのリンク、imgのソースなどの参照が間違っています。第2レベルのURLから相対的にこれらのファイルを探します。これをどうやって解決するのですか? – Firnas
これはクライアント側の問題のように聞こえるでしょう:ほとんどの場合、それらのリソースの相対パスを指定してロードしますか?ブラウザは変更されていないリクエストURLだけを知っているので、リソースをロードしようとすると間違った絶対URLを作成します。だから、サーバーの代わりにブラウザをリダイレクトする必要があります。内部的にリクエストURLを書き直す(醜いので、目に見えるので)か、リソースに対してクリーンなURLを作成する必要があります。通常、これはサーバー側のスクリプトの中にクリーンで健全な 'ベースURL'を定義し、それを使用してロードするリソースの絶対パスを構築することによって行われます。 – arkascha