1

CodeIgniterルートを使用して私はこのルールを持っています

$route['^(?!login|profile|signup|notification|member).*/(:num)/(:any)/(:any)'] = "home/$2/$0/$1/$3";

私のURLは次のようになりますhttp://example.com/memberfolder/7/view_document/WjbZpAPHM6

したがって、基本的に、コードは値view_document()であるホームクラスのメソッドにルーティングする必要がありますrsegment(5)WjbZpAPHM6

ただし、コードがホームクラスに移動する場合、rsegment(5)値はview_documentです。

ルーティングルールでわかるように、rsegmentは5つしかないので、すべてのrsegmentを印刷すると、次のようになります。

ホームview_documentmemberfolder7 view_document WjbZpAPHM6

ご覧のとおり、myrsegment(5)は重複またはrsegment(2)です。rsegmentは5つしかないはずですが、ドキュメントファイルの値WjbZpAPHM6はに保存されrsegment(6)ます。

rsegment(5)ではなく、ドキュメント名の値になるように修正する方法に関するアドバイスview_document

また、私.htaccessはそのようなものです:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /example/index.php/$1 [L]
4

2 に答える 2

0

CodeIgniterについてはよくわかりませんが、置き換える必要があると思います

$route['^(?!login|profile|signup|notification|member).*/(:num)/(:any)/(:any)'] = "home/$2/$0/$1/$3";

これとともに

$route['^(?!login|profile|signup|notification|member).*/(:num)/(:any)/(:any)'] = 'home/$2/$0/$1/$3';
于 2013-03-20T17:43:19.030 に答える
0

(:any)CI 3.0/を除くすべての文字と一致するか、 CI<=2.1.3で一致します/

[^/]+したがって、両方のバージョンと互換性を持たせるために、の代わりにを使用して、 CIの省略構文を使用せずに、文字の一致を手動で入力します:any。後方参照を作成したくないので、括弧を入れないことに注意してください。

また^、CIが自動的に挿入するため、挿入しません。さらに、後方参照が間違っています。あなたは使用しません$0、あなたは始めて、$1そして働きます。正しい番号に変更しました。


ルートは次のようになります。

$route['((?!login|profile|signup|notification|member)|member[^/]+)/(:num)/(:any)/(:any)'] = "home/$3/$1/$2/$4";

したがって、次のURLの例では次のようになります。

memberfolder/7/view_document/WjbZpAPHM6

後方参照は次のようになります。

$1 = memberfolder
$2 = 7
$3 = view_document
$4 = WjbZpAPHM6

次に、リクエストを作成します。

home/$3/$1/$2/$4になりますhome/view_document/memberfolder/7/WjbZpAPHM6

次のrsegmentを作成します。

rsegment(1) = home
rsegment(2) = view_document
rsegment(3) = memberfolder
rsegment(4) = 7
rsegment(5) = WjbZpAPHM6
于 2013-03-20T18:20:05.700 に答える