PHP и ЧПУ, что это и как с ними работать?
На днях нужно было быстренько состряпать простое подобие ЧПУ, для 4-6 страниц. Смысл заключался в том, что есть header (картинка с меню) и футер (картинка), а в центре должен был меняться текст. Т.к. страниц было всего от 4 до 6 то речи о CMS в принципе быть и не могло (не тот масштаб).
Было решено сделать до боле глупое решение. (на нем хорошо просматривается принцип работы ЧПУ).
Есть файл .htaccess со следующим содержимым:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L] (далее…)
Функционал Волшебных кавычек (Magic Quotes) - перехватывать данные, которые получает скрипт (массивы $_POST, $_GET и т.д.) и экранировать в них специальные символы.
Разработаны для защиты от хакерских атак вроде SQL Injection, но на практике от них больше проблем, чем пользы.
Посмотреть текущие настройки можно с помощью
phpinfo(). (если
Magic Quotes включена, в разделе
Configure Command будет строка
--enable-magic-quotes).
Отключение Волшебных кавычек (Magic Quotes)
в .htaccess:
php_flag magic_quotes_gpc Off
в php.ini:
magic_quotes_gpc Off
Отключает Magic quotes для входящих данных из массивов GET/POST/Cookie.
(далее…)
Ниже описаны способы сделать редирект (перенаправление) для каждого варианта.
Редирект PHP
|
<?php header("Location: http://google.ru"); ?> |
Не забывать: До заголовка не должно выводиться никаких!!! символов.
Частая проблема - пробел перед
<?php в начале файла
Следующий код работать не будет и даст варнинг:
|
<?php echo 'Редиректа не будет!'; header("Location: http://google.ru"); ?> |
Редирект HTML
|
<meta http-equiv="refresh" content="0; url=http://google.ru"></meta> |
- content - значение указывает количество секунд до переадресации на адрес, указанный в поле url
- url - адрес для редиректа. Туда и перенаправляем.
Редирект JavaScript
|
window.location="http://google.ru"; |
без комментариев... ))
В продолжении - Редирект в .htaccess
(далее…)
Как включить обработку файлов .htaccess
Все кажется просто, главное не путаться )
надо включить опцию - прописать в конфигах:
|
<Directory /> <strong> AllowOverride all</strong> </Directory> |
Вот только встает вопрос - где?
для Apache - httpd.conf
для Apache2 все немного посложнее. в
/etc/apache2/ есть следующие места, куда это можно записать:
- apache2.conf
- httpd.conf
- sites-enabled/default (или другие для виртуальных хостов)
Я рекомендую писать в последний файл. Потому что:
- Идеологически именно там выделено место под эти опции
- Значение этой опции в конфиге в папке sites-enabled переопределит другие значения. И можно будет потом долго танцевать с бубуном.
Свежие комментарии