Treść artykułu:
- Перенаправление на url со слэшем 1 Przekieruj do adresu URL z ukośnikiem
- Rewrite для WordPress 2 Przepis na WordPress
- Rewrite для MODx 3 Przepis na MODx
- 301-й редирект с index.php, index.html в любой папке 4 301 przekierowanie z index.php, index.html do dowolnego folderu
- Прочие 5 Inne
Przekieruj do adresu URL z ukośnikiem
Niektóre CMS dla stron mogą otwierać strony z ukośnikiem na końcu, a bez niego, jeśli silnik się nie przekieruje. Na przykład strona http://example.net/page i http://example.net/page/ z punktu widzenia użytkownika będzie jedna. Ale w przypadku wyszukiwarek są to dwie różne strony, a slash jest odpowiedzialny za wszystko. Tak więc powielona treść jest zła.
Aby przekierować na stronę ukośnika, dodaj następujący wiersz do pliku konfiguracyjnego nginx dla swojej witryny:
przepisać ^ ([^.] * [^ /]) $ 1 / permanent;
Teraz strona bez ukośnika zostanie przekierowana do 301. przekierowania na stronę z ukośnikiem. W przypadku stron z rozszerzeniami (.html, .php itp.) Ta reguła nie będzie miała wpływu. Ponadto jest uniwersalny i, aby silnik nie przetwarzał przekierowań za pomocą php, ta zasada powinna być zalecana dla większości witryn, w których używane są adresy czytelne dla człowieka.
Przepisz dla WordPressa
Dokumentacja WordPressa ma ładny przykład reguł przepisywania. Podkreślę tylko najbardziej podstawową rzecz, która jest wymagana do pracy w połączeniu z php-fpm .
location / { try_files $ uri $ uri / /index.php$args; } location ~ \ .php $ { try_files $ uri = 404; fastcgi_pass unix: /run/php-www.sock; fastcgi_index index.php; to fastcgi_params; fastcgi_param SCRIPT_FILENAME $ katalog_dokumentu $ fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com"; fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; }
Przepisz dla MODx
W przypadku witryn w tym systemie CMS używam następujących reguł:
location / { try_files $ uri $ uri / @rewrite; } location @rewrite { przepisać ^ / (. *) $ /index.php?q=$1; } location ~ \ .php $ { try_files $ uri = 404; fastcgi_pass unix: /run/php-www.sock; fastcgi_index index.php; to fastcgi_params; fastcgi_param SCRIPT_FILENAME $ katalog_dokumentu $ fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com"; fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; }
301. przekierowanie z index.php, index.html do dowolnego folderu
Zdarza się również, że sam CMS nie przekierowuje z plików indeksu do adresu URL bez nich. Na przykład witryna będzie dostępna zarówno na http://example.com/, jak i http://example.com/index.php. Ta reguła poprawia błąd.
if ($ request_uri ~ * index. (php | html)) { przepisać ^ (. +) index.php $ scheme: // $ host $ 1 permanent; }
W takim przypadku nie ma znaczenia, czy plik indeksu znajduje się w folderze głównym, czy w podfolderze, przekierowanie zawsze będzie działało.
Inne
Jeden z jego blogów postanowił zmienić strukturę linków. Wcześniej wszystkie posty były dostępne za pośrednictwem linków, takich jak / postname.html, teraz zostały przeniesione na inny adres: / fotojournal / postname /. Początkowo, jako rozwiązanie, pomyślałem o użyciu wtyczki redirection dla wordpress, ale potem chciałem spróbować zaimplementować ją na nginx. I pomysł się spełnił. :)
To prawda, że zasada okazała się prosta, ze względu na to, że wszystkie strony /%postname%.html zostały przeniesione do jednej kategorii - fotojournal. Ta reguła wygląda następująco:
location ~ * \. (html) $ { try_files $ uri $ uri / @fotojournal; } location @fotojournal { przepisać ^ / (. *) \. html $ / fotojournal / $ 1 / permanent; }
Rozważamy szczegółowo. Gdy żądanie pochodzi od użytkownika, najpierw szukany jest dowolny plik z rozszerzeniem .html w folderze z witryną. Jest to konieczne w przypadku prawdziwych stron HTML strony, które nie powinny być przenoszone do nowej kategorii.
Jeśli żądana strona nie zostanie znaleziona, żądanie zostanie przekierowane do drugiej lokalizacji - @fotojournal. Tutaj przekierowano (przekierowanie 301) na nowy adres. Na przykład strona /page.html otwiera się w / fotojournal / page /.