私は内部的にこのような何かにhttp://www.example.com/item?title=titlename&id=5
とhttp://www.example.com/page?title=titlename
のようなものからURLを書き換えしたい:http://www.example.com/item/titlename/5
またはhttp://www.example.com/page/titlename
。他の方法でラウンドする必要があります
... は内部http://www.example.com/item/titlename/5
からhttp://www.example.com/item?title=titlename&id=5
にを書き換えます。おそらく、ターゲットURLに.php
拡張子を含める必要がありますか? (ファイルの拡張子を追加行うために別の指令に依存しないでください。)
のようなものを試してみてください。
Options -MultiViews
RewriteEngine On
RewriteRule ^([a-z]+)/([\w-]+)(?:/(\d+))?$ /$1.php?title=$2&id=$3 [L]
これは、とし、末尾のIDなしの両方のURLを処理します(。例えば/5
) 。しかし、/item/titlename
という形式のURL(数値IDなし)を指定すると、空のid
URLパラメータがスクリプトに渡されます。 MultiViews
は、そうでない場合はmod_negotiationはmod_rewriteの前に、(例えば)item
からitem.php
にURLを書き換えますし、あなたが渡されたURLパラメータを取得することはありません、仕事にこれを無効にする必要があることを
注意。
具体的にターゲットファイル、書き換え前にpage.php
が存在する場合は、これを確認する追加の条件を含めることができます。しかし、私はこれが必要であるとは考えていませんでした。なぜなら、404と関係なく、ファイルが存在するかどうかを確認するのは比較的高価なためです。
Options -MultiViews
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([a-z]+)/([\w-]+)(?:/(\d+))?$ /$1.php?title=$2&id=$3 [L]
これは、ファイルがサイトのドキュメントルートに存在することを前提としています。
コメントに記載されているように、あなたのアプリケーションではすでにhttp://www.example.com/item/titlename/5
という形式のURLにリンクしているはずです。
アプリケーションで公開しているURLを既に「消去しましたか? – MrWhite
https://stackoverflow.com/questions/6940644/url-rewriting-including-titleの可能な複製とhttps://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-リンクを説明した – mario
いいえ、私はそれを掃除していない、私はそうするために助けが必要です、任意の助けてください? –