0

.htaccessを使用してURLを書き換えようとしていますが、URLが「www.mysite.com/basedir/directory/file.htm」のような場合にのみルールが考慮されるようにしたいと考えています。「www.mysite.com/basedir/file.htm」または「www.mysite.com/basedir/directory/directory/file.htm」は必要ありません。正確に記述された構造が必要です。現時点では、これを使用してそれを実行しようとしています。

RewriteRule ^(basedir)/([^/\.]+)/(.*)\.(htm)$    /template.php?&page=$3   [L]

しかし、それは機能しません。basedirの後に任意の数のディレクトリを受け入れます。
ご協力いただきありがとうございます

4

1 に答える 1

0

2番目の一致領域には、最初のように文字を除外する必要があります。

RewriteRule ^(basedir)/([^/\.]+)/([^/]*)\.(htm)$    /template.php?&page=$3   [L]

そうすれば、追加のスラッシュを一致させることはできず、パターンの前半にある2つの明示的なスラッシュのみを一致させることができます。

また、あなたは正確に何と一致させようとしてい$3ますか?一致させる必要があるものの周りに括弧を使用するだけで済みます。$3一致することになっている場合はfile.htm、代わりに次のように記述できます。

RewriteRule ^basedir/[^/\.]+/([^/]*\.htm)$    /template.php?&page=$1   [L]

または、「ファイル」と一致する必要がある場合は、次のようにします。

RewriteRule ^basedir/[^/\.]+/([^/]*)\.htm$    /template.php?&page=$1   [L]
于 2013-02-10T18:16:51.547 に答える