私はここ数日間、簡単なPHP CMSのmod_rewriteを調査してきましたが、私にとってはうまくいくはずのルールが見つかりました。
RewriteRule ^(\w+)/?$ view_post.php?url=$1
これは、www.example.com/example-post
をview_post.php
ページに移動し、DBから投稿をクエリすることになっています。名前に-
(ダッシュ)がある場合、これは機能しません。ただし、www.example.com/examplepost
を試してみると、view_posts.php
ページの読み込みとSQLが正しく構築されていることがわかりますが、コンテンツは読み込まれません。明らかに、DBの内容と一致しないためです。
これを回避する方法はいくつかあります。1つはダッシュを使用してDBをクエリし、substr
を使用してテキストから簡単に削除することです。ただし、この書き換えルールは今のところ。これはおそらく正規表現に関連するものですが、私の理解を超えています。
どんな助けも大歓迎です!
ルールの一致に-
(ハイフン)を含める必要があります。行を次のように変更します。
RewriteRule ^([\w\-]+)/?$ view_post.php?url=$1
動作します。
-
はWordの文字ではないため、明らかに機能しません。
改行文字以外に一致する\w
を.
に変更する必要があります。
そうすることで、ホームページを除くすべてのURLパスが誘導されます。