dandandan
Мой дом здесь!
- Регистрация
- 7 Авг 2008
- Сообщения
- 1.036
- Реакции
- 293
- Автор темы
- #1
Есть урл Например: localhost/hotel/mogu/prikrutit-golosovanie.html
Надо:
1. если урл вида /hotel/mogu/prikrutit-golosovanie
добавить в конце .html
2. если урл вида /hotel/mogu/prikrutit-golosov-anie/
убрать последний слеш и добавить в конце .html, чтобы получилось localhost/hotel/mogu/prikrutit-golosovanie.html
3. если урл вида /hotel/mogu/prikrutit-golosov-anie.htm
добавить в конце букву L , чтобы получилось localhost/hotel/mogu/prikrutit-golosovanie.html
4. Из полученного урла в переменную id записать hotel/mogu/prikrutit-golosovanie
5. Первые 3 пункта должны сопровождаться 301 редериктом.
6. Правила привязать только к директории, где находится файл htacsess (не знаю как сделать)
Все запросы переводятся на скрипт index.php . Внутри скрипта стоит код:
По отдельности правила работают. При совмещении получаю ошибку в браузере: Неверное перенаправление на странице.
Если закомментировать вот это правило: то все ок
Что где подправить и может есть более лучшее решение?
Надо:
1. если урл вида /hotel/mogu/prikrutit-golosovanie
добавить в конце .html
2. если урл вида /hotel/mogu/prikrutit-golosov-anie/
убрать последний слеш и добавить в конце .html, чтобы получилось localhost/hotel/mogu/prikrutit-golosovanie.html
3. если урл вида /hotel/mogu/prikrutit-golosov-anie.htm
добавить в конце букву L , чтобы получилось localhost/hotel/mogu/prikrutit-golosovanie.html
4. Из полученного урла в переменную id записать hotel/mogu/prikrutit-golosovanie
5. Первые 3 пункта должны сопровождаться 301 редериктом.
6. Правила привязать только к директории, где находится файл htacsess (не знаю как сделать)
Все запросы переводятся на скрипт index.php . Внутри скрипта стоит код:
PHP:
if (isset($_GET['id'])){
echo $_GET['id'];
}
else{
echo 'Главная.';
}
PHP:
RewriteEngine On
# для 4 пункта
RewriteRule ^(.*)\.html$ /index.php?id=$1 [L,NS]
#Написал правила для первых 3 пунктов:
# добавляем L в .html в конце если закончилось .htm
RewriteCond %{REQUEST_URI} (.htm)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1l [NS,L,R=301]
# конец добавляем L в .html в конце если закончилось .htm
# добавляем .html в конце если ссылка закончилась просто текстом со слешем на конце
#удалил слеш на конце
RewriteRule ^(.*)\/$ /$1 [NS,L,R=301]
# конец добавляем .html в конце если ссылка закончилась просто текстом со слешем на конце
# добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце
RewriteCond %{REQUEST_URI} !(\.html)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [NS,L,R=301]
# конец добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце
Если закомментировать вот это правило: то все ок
PHP:
# добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце
RewriteCond %{REQUEST_URI} !(\.html)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [NS,L,R=301]
# конец добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце
Что где подправить и может есть более лучшее решение?