mod_rewrite を使用して、.htaccess ファイルで動的 mod 書き換えルールを構成しようとしています。私はこれを理解することに非常に近づいています。次のような URL を取得しようとしています。
http://www.mysite.com/index.php?service=14&title=events
http://www.mysite.com/index.php?service=48&title=planning
これらに自動的に書き換えるには:
http://www.mysite.com/service/14/events
http://www.mysite.com/service/48/planning
これまでの私のコードは次のとおりです。
RewriteRule ^service/(.*)/(.*)$ index.php?service=$1&title=$2 [NC,L]
RewriteCond %{QUERY_STRING} ^service=$1&title=$2 [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php [NC]
RewriteRule ^index.php$ /service/$1/$2 [L,R=301]
たぶん最後の行に何か問題があると思いますか?私は正規表現が得意ではないので、どんな助けでも大歓迎です。編集:きれいな URL が機能することを明確にしたかっただけです。ただし、古い URL はリダイレクトされず、ブラウザーに表示されたままです。
これが簡単かどうかはわかりませんが、URL を次のようにすることができれば:
http://www.mysite.com/service/14/title/events
http://www.mysite.com/service/48/title/planning
それならそれもうまくいくでしょう。2 番目のクエリ タイトルを URL に含める必要はありませんが、そのままにしておく方が簡単であれば、大したことはありません。
編集:回答済みソリューションに貢献してくれたすべての人に感謝します。書き換えルールのためにこれを取得しました:
RewriteRule ^index/service/(.*)/(.*)/$ index.php?service=$1&title=$2
「インデックス」を追加すると、両方のクエリ文字列で機能しました。リダイレクトに関する限り、私は自分の php スクリプトを編集し、そこですべての URL リダイレクトを行いました。これははるかに簡単でした。それを指摘してくれたmkjasinskiに感謝します。