0

Web サイトへの URL 書き換えを使用したいと思います。サーバーに .htaccess ファイルを配置し、書き換えモードをオンにしましたが、問題が 1 つある以外は機能しているようです。私は2つのphp拡張ファイル、つまりcategory.phpとproducts.php respを持っています。

これが私の要件です。1つの条件が満たされたときにcategory.phpが呼び出され、別の条件が満たされたときにproducts.phpが呼び出される必要があります

.HTACCESS :

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

だから彼女は私のウェブサイトのURLです カテゴリーページ

http://www.mysite.com/category1

製品ページについて

http://www.mysite.com/product-name/101

したがって、問題は2番目のURL書き換え条件、つまり製品ページのURLにあります.URLをブラウザに入れると、404になります.一方、1つの書き換え条件は機能しているように見えました.上記の形式のWebページにアクセスするのを手伝ってください.

4

2 に答える 2

0

問題は、正規表現の文字クラスでは、ハイフンが開始または終了のいずれかである必要があることです。それ以外の場合はエスケープする必要があります (それ以外の場合は範囲​​を表します)。

両方のルール:

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

正しい正規表現を使用していないため、間違った結果が生成されます。

ルールを次のコードに置き換えます。

RewriteRule ^([a-z_-]+)/?$ /category.php?arg=$1 [L,NC,QSA]
RewriteRule ^([a-z_'-]+)/([0-9]+)/?$ /product.php?arg=$1&pid=$2 [L,NC,QSA]

PS:予期しない状況をより適切に処理するために、ルールにいくつかの修正を加えました。

于 2013-09-19T10:49:05.083 に答える
0

正規表現に境界を追加し、キャプチャしたグループを後方参照する必要があります。

RewriteRule ^([A-Za-z-_]+)$ category.php?arg=$1 [L]
RewriteRule ^([A-Za-z-_'']+)/([0-9]+)$ product.php?arg=$1&pid=$2 [L]
于 2013-09-19T10:36:19.960 に答える