Потребовалось корректное ЧПУ для сайта, без дублирования страниц, для примера:
.htaccess:
CODE ( htmlphp):
скопировать код в буфер обмена
AddDefaultCharset UTF-8 php_flag magic_quotes_gpc Off php_flag register_globals Off Options -Indexes php_flag display_errors on RewriteEngine On RewriteCond %{REQUEST_URI} !^/favicon.ico # Existed file. RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .+ - [L] # документы не содержащие точки в имени должны оканчиваться слешом RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1/ [R,L,QSA] RewriteRule ^(.*)$ index.php [nocase]
и простой обработчик index.php:
PHP:
скопировать код в буфер обмена
<?PHP $route = trim($_SERVER['REQUEST_URI'],'/'); switch ($route[0]) { case 'home': if(count($route)>1 ) echo 'Page not found'; else echo 'This is page "HOME"'; break; case '': echo 'This is MainPage'; break; default: echo 'Page not found'; break; }
То есть, теперь мы обращаясь к скрипту ссылкой вида site.ru/home попадаем на единственную страницу site.ru/home/ со слэшем в конце строки. Но не все так гладко вышло, из-за двух последних RewriteRule страница запрашивается дважды, причем если это даже существующая директория. Тщетны были попытки найти похожий корректный пример в сети, к сожалению в htaccess не силен, пробовал сам в этом разобраться. Вопрос: каким бы образом соединить оба RewriteRule или есть другие варианты организовать такое действо?
|