0

URLの書き換えに問題があります。

私の .htaccess ファイルは次のようになります。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog\/$ /blog.php [L]
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)-([0-9]+)\/$ /blog.php?action=listposts&categoryid=$1&page=$2 [L]
RewriteRule ^blog\/featured\/([0-9]+)\/$ /blog.php?action=listposts&categoryid=featured&page=$1 [L]
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)\/[a-zA-Z0-9\-]+\/$ /blog.php?action=viewpost&postid=$1 [L]
</IfModule>

理由はわかりませんが、うまくいきません。たとえば、 のような url に移動してblog/my-category/1-5/print outすると、 url$_GETにいるかのようにキーがありませんblog/。この質問は重複している可能性が高いため申し訳ありませんが、何をすべきか本当にわかりません。他の誰かの質問の解決策に基づいて問題が何であるか理解できないと思います。

4

1 に答える 1

1

ルールは、検出された順序(トップダウン) で処理されます。また、エスケープする必要のないいくつかのものをエスケープしています。末尾-の括弧内のハイフン文字はエスケープする必要はありません。[]それらが物の間にある場合、それらは範囲として扱われます (例: [0-9])。スラッシュ/はエスケープする必要はありませんが、(設定によっては) 末尾のスラッシュが必要ない場合もあるため、?常に必要としないように文字を追加しました。

RewriteEngine on
RewriteBase /

RewriteRule ^blog/[a-zA-Z0-9-]+/([0-9]+)-([0-9]+)/?$ /blog.php?action=listposts&categoryid=$1&page=$2 [L]
RewriteRule ^blog/featured/([0-9]+)/?$ /blog.php?action=listposts&categoryid=featured&page=$1 [L]
RewriteRule ^blog/[a-zA-Z0-9-]+/([0-9]+)/[a-zA-Z0-9-]+/?$ /blog.php?action=viewpost&postid=$1 [L]
RewriteRule ^blog/?$ /blog.php [L]

多くのオンラインの例や本で文字を区切り文字として使用しているため、PHP で関数を使用したpreg_ことがある場合は、スラッシュ エスケープの習慣がそこから来ている可能性があります。/

于 2013-07-29T15:24:34.153 に答える