0

ユーザーがこのURLを入力したときに次のルールを作成しようとしています:

domain.com/09/13/2013/thisIsMyPageTitle

その URL はブラウザー ウィンドウに残りますが、この URL のコンテンツは表示されます。

domain.com/contentlibrary/thisIsMyPageTitle

これは、現在エラーが発生している私のルールです。

RewriteEngine On
RewriteRule ^((0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d[/])$(.*) /contentlibrary/$1  [L]

日付を正規表現と一致させようとしており、コンテンツを保持し、実際に存在する 2 番目の URL の最初の URL の (.*) を使用します。

4

2 に答える 2

3

日付で何もしないのなら、日付のセマンティクスを正確に扱う必要はありません。正規表現を単純化できます。

RewriteRule ^[0-9]+/[0-9]+/[0-9]+/([^/]+)/?$ /contentlibrary/$1 [L]
于 2013-09-18T19:02:21.800 に答える
0

取得しているエラーは、おそらく正規表現にエスケープされていないスペースがあるためです。具体的には次のとおりです。

[- /.]

スペースは、パラメーター間の区切り文字として mod_rewrite によって解釈されます。さらに、これがあります:

$(.*)

あなたのパターンの最後に。は string の末尾に一致$するため、それらを交換する必要があります。

(.*)$

そう:

^((0[1-9]|1[012])[-\ /.](0[1-9]|[12][0-9]|3[01])[-\ /.](19|20)\d\d[/])(.*)$

あなたが望むパターンであるべきです。

于 2013-09-18T19:13:08.467 に答える