Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Корректное ЧПУ, правописание в .htaccess

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Garda1
Отправлено: 28 Апреля, 2013 - 19:35:04
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Потребовалось корректное ЧПУ для сайта, без дублирования страниц, для примера:
.htaccess:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. AddDefaultCharset UTF-8
  3.  
  4. php_flag magic_quotes_gpc Off
  5. php_flag register_globals Off
  6. Options -Indexes
  7.  
  8. php_value error_reporting 2047
  9. php_flag display_errors on
  10.  
  11. RewriteEngine On
  12.  
  13. RewriteCond %{REQUEST_URI} !^/favicon.ico
  14.  
  15. # Existed file.
  16. RewriteCond %{REQUEST_FILENAME} -f [OR]
  17. RewriteCond %{REQUEST_FILENAME} -d
  18. RewriteRule .+ - [L]
  19.  
  20. # документы не содержащие точки в имени должны оканчиваться слешом
  21. RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
  22. RewriteRule .* %1/ [R,L,QSA]
  23.  
  24. RewriteRule ^(.*)$ index.php [nocase]
  25.  


и простой обработчик index.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $route = trim($_SERVER['REQUEST_URI'],'/');
  5. $route = preg_replace("/\?.*/",'',$route);
  6. $route = preg_replace('/\/$/', '', $route);
  7. $route = explode('/', $route);
  8.  
  9. switch ($route[0]) {
  10.         case 'home':
  11.                 if(count($route)>1) echo 'Page not found';
  12.                 else echo 'This is page "HOME"';
  13.                 break;
  14.         case '':
  15.                 echo 'This is MainPage';
  16.                 break;
  17.         default:
  18.                 echo 'Page not found';
  19.                 break;
  20. }
  21.  


То есть, теперь мы обращаясь к скрипту ссылкой вида site.ru/home попадаем на единственную страницу site.ru/home/ со слэшем в конце строки. Но не все так гладко вышло, из-за двух последних RewriteRule страница запрашивается дважды, причем если это даже существующая директория. Тщетны были попытки найти похожий корректный пример в сети, к сожалению в htaccess не силен, пробовал сам в этом разобраться. Вопрос: каким бы образом соединить оба RewriteRule или есть другие варианты организовать такое действо?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB