Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: .htaccess добавить расширение файла, удалить последний слэш, дописать букву L в .htm
 
 автор: dandandan   (02.12.2011 в 23:07)   письмо автору
 
 

Всем Здравствуйте.
есть урл Например: _http://localhost/hotel/mogu/prikrutit-golosov-anie.html

Надо:
1. если урл вида /hotel/mogu/prikrutit-golosov-anie , то
добавить в конце .html

2. если урл вида /hotel/mogu/prikrutit-golosov-anie/ , то
убрать последний слеш и добавить в конце .html

3. если урл вида /hotel/mogu/prikrutit-golosov-anie.htm , то
добавить в конце .l , чтобы получилось .html

4. Из полученного урла в переменную записать hotel/mogu/prikrutit-golosov-anie

Написал правила для первых 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 в конце если ссылка закончилась просто текстом без слеша на конце





Написал правило 4-го случая:
RewriteRule ^(.*)\.html$ /index.php?id=$1 [L,NS]




По отдельности правила работают. При совмещении получаю ошибку в браузере: Неверное перенаправление на странице.

Если закомментировать правило: то все ок
# добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце
RewriteCond %{REQUEST_URI} !(\.html)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [NS,L,R=301]
# конец добавляем .html в конце если ссылка закончилась просто текстом без слеша на конце




Что где подправить и может есть более лучшее решение?

  Ответить  
 
 автор: Sfinks   (04.12.2011 в 13:46)   письмо автору
 
   для: dandandan   (02.12.2011 в 23:07)
 

Озадачили вы однако! Но тем не менее получилось :)
RewriteRule ^(.*)\.html$ test.php?id=$1 [L]
RewriteRule ^(.*)(/|\.htm)$ $1.html [L]
RewriteCond %{REQUEST_URI} !(\.html|\.php)$ [NC]
RewriteRule ^(.*)$ $1.html [L]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования