Zuerst habe ich die URL-Rewrite-Methode von Nginx verwendet.
Enable_query_strings aktivieren
Die Methode zum Aktivieren ist sehr einfach: in application/config/config.php festlegen:
$config['enable_query_strings'] = FALSE
Wenn Sie im PATH_INFO-Modus, der in CI-Entwicklungsprojekten verwendet wird, die URL in der Nginx-Konfiguration neu schreiben möchten, müssen Sie die Zeichenfolgenabfrage in der CI-Konfigurationsdatei aktivieren und die Änderungen im URL-Formular vergleichen:
URL: www.xxx.com/user/profile String-Abfragemodus: www.xxx.com/index.php?c=user&m=profile
Stellen Sie das Frontend ein und Back-End-URLs nach bestimmten Regeln. Nach dem Umschreiben sind alle Tests in Ordnung. Es gibt jedoch ein Problem beim Paging, da sich die nach der Aktivierung der Zeichenfolgenabfrage generierte Paging-URL-Adresse geändert hat:
Nicht aktiviert: /user/list/10 Nach der Aktivierung der Zeichenfolgenabfrage: /user/list&per_page= 10
Der Grund, warum die folgende falsche URL angezeigt wird, ist, dass sich beim Generieren der Paginierung das base_url-Format nicht geändert hat, sodass es sich von /user/list in das entsprechende /index.php?c=user&m= ändert Liste wird die folgende Situation angezeigt:
Zweite Seite: www.xxx.com/index.php?c=user&m=list&per_page=10 Dritte Seite: www.xxx.com/index.php? user&m=list&per_page=20 Die vierte Seite: www.xxx.com/index.php?c=user&m=list&per_page=30
Und die Seitengröße, die ich eingestellt habe, ist immer 10, in diesem Fall per_page. Das sollte es sein immer 10 sein. Ich habe mir den Code der Pagination-Klasse angesehen und festgestellt, dass per_page nur der Standardwert von query_string_segment ist. Ich habe fälschlicherweise gedacht, dass es sich um den Parameter per_page handelt.
Paging ist mit Rewrite kompatibel
Um es zusammenzufassen: Wenn Sie in Bezug auf Paging mit Rewrite kompatibel sein möchten, ändern Sie den Parameter base_url beim Generieren von Paging:
Methode 1 : /index .php?c=user&m=list, das Ergebnis ist: /index.php?c=user&m=list&per_page=10 Methode 2: /user/list?, das Ergebnis ist: /user/list?&per_page=10
Das Paging-SQL ist:
$this->db->limit($pagesize, $this->input->get('per_page'));
Um die URL-Konsistenz aufrechtzuerhalten, verwenden Sie die zweite Methode. Sie können auch später alle nutzlosen Parameter hinzufügen, um das Ergebnis zu /user/list?x=xxx&per_page=10 zu machen.
Diskutieren
über Paginierung. Natürlich können Sie auch nicht das mit CI gelieferte Paging verwenden oder Pagination.php ändern.
Wenn es als Parameter der Methode übergeben wird, eine normale URL wie: /user/arg1/arg2/arg3, dann kann es beim Umschreiben nicht übergeben werden (zumindest habe ich noch keine Lösung gefunden) ), wenn Sie es lösen möchten, müssen Sie die Parameter in den GET-Modus ändern, was eine Änderung des Programms erfordert und daher nicht empfohlen wird.
Darüber hinaus erfordert die Verwendung von Rewrite unterschiedliche Formen von URLs. Wenn das Projekt sehr komplex ist, wird es zu einer Belastung, daher suchen wir nach einer anderen Methode: Lassen Sie Nginx PATH_INFO an fastcgi übergeben, siehe nächster Artikel.
Das Obige ist der Inhalt des Nginx-KonfigurationscodeIgniter-Projekts (1). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!