3

私は以下をサポートするミニフレームワークを構築しています:

mysite.com/template/
mysite.com/template/action/
mysite.com/template/action/model/

ブートストラップとしての使用:

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule .* /index.php

しかし、どんな要求に対しても:

mysite.com/template/action/model/**extra/stuff/should/vanish/**

最大URLサイズが常に余分なものをドロップするように:

mysite.com/template/action/model/
4

1 に答える 1

4

あなたはこのようなことを意味しますか?

# if more than 3 nodes deep          v--- the extra stuff should vanish
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/.+ /$1/$2/$3/? [R=301,L]

これにより、ブラウザがリダイレクトされ、3つを超えるノードがある場合にのみ3つのノードが保持されるようになります。これは、おそらくルーティングルールを超えるはずです。


編集:

4番目のブロックでこのケースは持ちこたえられないので:site.com/a/b/c/?d

ここでクエリ文字列と照合するための特定のルールが必要になります。これは、の式で実行できることを超えていますRewriteRule。これらのルールは、上記のルールの前または後に配置できます。

# Check if there's a query string
RewriteCond %{QUERY_STRING} !^$
# if there are exactly 3 nodes, then remove the query string
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1/$2/$3/? [R=301,L]

クエリ文字列(以降のすべて?)は、書き換えエンジンで使用されるURIの一部ではないため、特別な条件が必要です。

于 2012-08-02T16:34:48.040 に答える