SPIP & htaccess. Приклади використання.

Кілька стандартних прикладів по використанню htaccess в першу чергу для редиректів в SPIP. В цілому, приклади досить банальні й поширені, що б робити ще один список прикладів, але з іншого боку деякі завдання характерні тільки для SPIP. І їх реалізація вимагає хороших знань ModRewrite або спортивних навичок по гугленню.

Перенаправлення зі старих посилань на нові

В основному ми застосовуємо редиректи при редизайні сайту. Редизайн зазвичай супроводжується зміною системи управління сайтом. Як наслідок повністю міняються посилання на сторінки (URL). Але якщо сайт старий, то більша частина його сторінок вже проіндексована. Якщо зробити бездумну зміну сайту, то користувачі, перейшовши за старою посиланням побачать повідомлення про помилку. Редиректами старих сторінок на нові ми можемо цього уникнути.

Приклад № 1

Переспрямувати c: http://domain.com/Glavnaya.html

Переспрямувати на: http://domain.com/

Redirect 301 / Glavnaya.html /

Приклад № 2

Переспрямувати c: http://domain.com/tehnology

Переспрямувати на: http://domain.com/spip.php?rubrique6

RedirectMatch 301 ^ / tehnology $ / spip.php? rubrique6

Приклад № 3

Переспрямувати c: http://domain.com/tehnology/36

Переспрямувати на: http://domain.com/spip.php?article23

RedirectMatch 301 ^ / tehnology/36 $ / spip.php? article23

Приклад № 4

Переспрямувати c: http://domain.com/2009?func=viewcategory&catid=5

Переспрямувати на: http://domain.com/spip.php?article29

RedirectMatch 301 ^ / 2009? func = viewcategory & catid = 5 $ / spip.php? article29

Приклад № 5

Переспрямувати c: http://domain.com/index.php?page=chi-siamo.html

Переспрямувати на: http://domain.com/?lang=it


RewriteCond% QUERY_STRING. Chi-siamo \. Html $
RewriteRule ^ index \. Php $? Lang = it [L, R = 301]

Боремося з дублюванням контенту

Приклад № 1

Особливо часто зустрічається, якщо ми виконали перенесення сайту з Joomla або подібної CMS, коли в індексі пошуковика посилання на головну сторінку збереглася у вигляді http://domain.com/index.php, а нам треба загорнути її на головну.

Переспрямувати c: http://domain.com/index.php (index.html)

Переспрямувати на: http://domain.com/


RewriteCond% THE_REQUEST ^ GET \. * / Index \. (Php | html) \ HTTP
RewriteRule ^ (. *) Index \. (Php | html) $ / $ 1 [R = 301, L]

Приклад № 2

В силу архітектури багатомовних сайтів часто дублюється посилання на головну сторінку з посиланням на мовну версію. Тобто якщо у нас є сайт http://domain.com, основна мова сайту російська, то головна сторінка буде доступна за двома посиланнями http://domain.com і http://domain.com/?lang=ru.

Переспрямувати c: http://domain.com/?lang=ru

Переспрямувати на: http://domain.com/


RewriteCond% QUERY_STRING ^ lang = ru. * $
RewriteRule ^ /? [R = 301, L]

Дрібні красивості

Приклад 1. Посилання /? Lang = ru

І знову багатомовні сайти. Посилання виду http://domain.com/?lang=ru функціональна, але не красива. Куди симпатичніше буде посилання виду http://domain.com/ru.

Для цього в самому шаблоні SPIP всі посилання прописуємо в такому форматі # URL_SITE_SPIP # LANG, замість # URL_SITE_SPIP? Page = # LANG, а в багатостраждальному htaccess робимо такий запис

RewriteRule ru $ /? Lang = ru [QSA, L]

Приклад 2. Пряме посилання на нестандартний шаблон

Переспрямувати c: http://domain.com/cart

Переспрямувати на: http://domain.com/?page=cart


RewriteRule ^ cart $ spip.php? Page = cart [QSA, L]

Сайт на декількох мовах з декількома доменами

Припустимо, у нас є сайт з двома мовними версіями - англійської і російської. І два домену domain.com і domain.ru для кожної версії відповідно.
Нам необхідно, що б при заході domain.com ми потрапляли строго на англійську версію сайту.

Для цього в настройках хостингу ми вказуємо домен domain.com як alias до domain.ru (або як domain pointer) і додаємо наступне правило для mod_rewrite:


RewriteCond% HTTP_HOST ^ www.domain \. Com $
RewriteRule (. *) Spip.php? Lang = en [QSA, L]

нагору