2

よし、あきらめます。私はApacheの書き換えに頭を悩ませることはできません.多くのstackoverflowの提案に目を通しましたが、どれも私には意味がないようです.

したがって、現在 www.example.com/index.php?article=some-article-name に基づいてコンテンツをレンダリングするスクリプトがあります

しかし、私はユーザーにそのページがwww.example.com/section/some-article-name

私は次のようなものを使ってみました

# Turn on URL rewriting
RewriteEngine On
RewriteRule ^/section/([a-zA-Z0-9\-]+)$ index.php?article=$1

これらすべての人々の指示のおかげで、私は答えを発見しました。

RewriteRule ^section/([a-zA-Z0-9]+)$ test.php?article=$1
RewriteRule ^section/([a-zA-Z0-9]+)/$ test.php?article=$1

2 つの異なるタイプのリクエスト (末尾に / があるものとないもの) を処理するには、両方が必要です。

4

2 に答える 2

2

のような単純なルールが必要になる場合があります。

 RewriteRule ^/section/(.*) index.php?article=$1

ハイフンと一致しないため、次のような名前some-article-nameは失敗します。制限付きの正規表現が必要な場合は、次のようにしてください。

 RewriteRule ^/section/([-_.a-zA-Z0-9]+)$ index.php?article=$1

これは、ASCII 英数字と、名前に含まれる可能性が最も高い句読点に一致します。

受信リクエストにパラメーターがある場合、これらのルールのいずれかが失敗します。

于 2012-12-13T00:56:08.720 に答える
0

あなたの正規表現はとても近いです。([a-zA-Z0-9]+)1 つ以上の小文字、大文字、および/または数字を探しているキャプチャ グループがありますが、探していないのはハイフンです。これを試して:

RewriteRule ^/section/([a-zA-Z0-9\-]+)$ index.php?article=$1

ハイフンは正規表現で特別な意味を持つため、エスケープする必要があります。

于 2012-12-13T00:55:45.687 に答える