web-dev-qa-db-ja.com

mod_rewriteの問題。リンクに「-」が含まれていると機能しません

私はここ数日間、簡単なPHP CMSのmod_rewriteを調査してきましたが、私にとってはうまくいくはずのルールが見つかりました。

RewriteRule ^(\w+)/?$ view_post.php?url=$1

これは、www.example.com/example-postview_post.phpページに移動し、DBから投稿をクエリすることになっています。名前に-(ダッシュ)がある場合、これは機能しません。ただし、www.example.com/examplepostを試してみると、view_posts.phpページの読み込みとSQLが正しく構築されていることがわかりますが、コンテンツは読み込まれません。明らかに、DBの内容と一致しないためです。

これを回避する方法はいくつかあります。1つはダッシュを使用してDBをクエリし、substrを使用してテキストから簡単に削除することです。ただし、この書き換えルールは今のところ。これはおそらく正規表現に関連するものですが、私の理解を超えています。

どんな助けも大歓迎です!

1
TuxMeister

ルールの一致に-(ハイフン)を含める必要があります。行を次のように変更します。

RewriteRule ^([\w\-]+)/?$ view_post.php?url=$1

動作します。

1
hjpotter92

-はWordの文字ではないため、明らかに機能しません。

改行文字以外に一致する\w.に変更する必要があります。

そうすることで、ホームページを除くすべてのURLパスが誘導されます。

0
Itai