Кілька стандартних прикладів по використанню htaccess в першу чергу для редиректів в SPIP. В цілому, приклади досить банальні й поширені, що б робити ще один список прикладів, але з іншого боку деякі завдання характерні тільки для SPIP. І їх реалізація вимагає хороших знань ModRewrite або спортивних навичок по гугленню.
В основному ми застосовуємо редиректи при редизайні сайту. Редизайн зазвичай супроводжується зміною системи управління сайтом. Як наслідок повністю міняються посилання на сторінки (URL). Але якщо сайт старий, то більша частина його сторінок вже проіндексована. Якщо зробити бездумну зміну сайту, то користувачі, перейшовши за старою посиланням побачать повідомлення про помилку. Редиректами старих сторінок на нові ми можемо цього уникнути.
Приклад № 1
Переспрямувати c: http://domain.com/Glavnaya.html
Переспрямувати на: http://domain.com/
Redirect 301 / Glavnaya.html / code>
Приклад № 2
Переспрямувати c: http://domain.com/tehnology
Переспрямувати на: http://domain.com/spip.php?rubrique6
RedirectMatch 301 ^ / tehnology $ / spip.php? rubrique6 code>
Приклад № 3
Переспрямувати c: http://domain.com/tehnology/36
Переспрямувати на: http://domain.com/spip.php?article23
RedirectMatch 301 ^ / tehnology/36 $ / spip.php? article23 code>
Приклад № 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 code>
Приклад № 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]
Code>
Приклад № 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]
Code>
Приклад № 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]
Code>
Приклад 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]
Code>
Переспрямувати c: http://domain.com/cart
Переспрямувати на: http://domain.com/?page=cart
RewriteRule ^ cart $ spip.php? Page = cart [QSA, L]
Code>
Припустимо, у нас є сайт з двома мовними версіями - англійської і російської. І два домену 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]
Code>