1

2 つのバニティ URL をサポートするように .htaccess を作成しようとしています。

 RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?p=$1&s=$2 [L,QSA]

たとえば、http://website.com/home/testにアクセスすると、

404 が返されますが、website.com/home だけにアクセスすると、$_GET["p"] がホームに戻ります。

URL に 2 番目の変数を追加すると 404 が返されるのはなぜですか?

4

1 に答える 1

2

/home/test式と一致しないため、404 が返されます^[a-zA-Z0-9]+/?$。最初のグループの後の 2 番目のグループは、文字列ターミネータ/を超えて存在します。2 番目のグループ$を追加する必要がありますが、これはオプションです。次のスラッシュまですべてに一致する文字クラスを()置き換えました。a-zA-Z0-9[^/]+

(?:)は、最初の を含む非キャプチャ グループを示し、その中にコンポーネントを取得するため/のキャプチャ グループがあります。最後のターミネータの前で、構成全体がオプションになります。()$2?$

RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?p=$1&s=$2 [L,QSA]
于 2013-05-15T02:51:41.173 に答える