убрать index php htaccess
5 Answers 5
Symfony 2 has an excellent solution:
This accomplishes the following:
Note that the line:
is responsible for setting the %
I tried this and works fine:
If your site’s system directory (/system/) has been renamed and is still accessible by URL, modify the RewriteCond line above:
If you are running EE from a sub-directory rather from the root of your domain (e.g. http://example.com/myeesite/ instead of http://example.com/), just remove the slash preceding index.php in the RewriteRule line above, like so:
If you are running EE from a sub-directory and it still doesn’t work after removing the slash, you may need to specify the sub-directory in your rewrite rule. For example, if your sub-folder is named testing, change:
To remove index.php from urls on apache2.4 you can use the following rule :
This will change the uri
This rule will return an internal server error for lower versions of apache as they don’t support the END flag. Please see the anubhava’s answer above that works almost on all versions.
I’ve been compelled to join stack overflow.com today to comment here as the answer has solved a long term problem I’ve had with a Zend Framework website. I’ve worked on the website around 3 1/2 years and during that time I discovered that it didn’t handle index.php correctly and this causes webmaster tools to see duplicate titles etc.
I decided to search again today for a solution, one of many times attempted.
This is the one (the last answer shown above) that solves my problem.
As an example. this is what it achieves for me.
Thank you to everyone who contributed to the original question as it lead to the answer and solution above.
Extra Note: I have other rewrite commands that handles the other aspects but those on their own didn’t fix the index.php and the only time this has been fixed is by using.
I only hope it helps others whether its ExpressionEngine or Zend Framework, in the future.
Каждый раз, когда приходится провести технический аудит сайтов клиентов, я начинаю смотреть, что попало в индекс поисковых систем. Зачастую в поиск попадают дубли страниц, а Яндекс и Google видят один и тот же сайт, как два разных.
Рассмотрим по порядку, что нам необходимо прописать. Есть множество всяких настроек, я расскажу о том, что я использую. Со временем, буду дополнять новые проверенные настройки.
Настраиваем основное зеркало сайта
Основной ошибка, когда сайт доступен по двум адресам, с www или без:
Точной информации, что лучше использовать, я не нашел. Но чаще склонен использовать название домена без www. Считаю, что использование www в названии, чаще актуально в off-лайне, для рекламы, баннерах, визитках. Визуальное видение названия с www подразумевает, что речь идет о сайте в интернете.
Смотрим, что нужно прописать:
RewriteEngine On
RewriteCond %
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Убираем дубль главной страницы /index.php
Далее, сайт может быть доступен как:
Убираем /index.php из индексации:
RewriteCond %
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Исправляем слэш в URL адресе
Например страница доступна со слэшем и без него:
Необходимо выбрать что-то одно. Честно, не уверен насколько это серьезно для продвижения сайта, будет ли вес страницы разбиваться пополам? Но есть один отрицательный момент, когда страница без слэша на конце, или наоборот, отдает ответ сервера 404. Посмотрим решение.
301 Редирект с одной страницы на другую
Если адрес вашей страницы поменялся и вам необходимо сделать перенаправление на новую, используем следующий формат записи:
Redirect /old.php http://site.ru/new.php
Как проверить ответ сервера?
Благодаря «RewriteBase /» удобнее делать преобразования URI (убирается привязка к физическому расположению файлов сайта на сервере).
Давайте рассмотрим самые распространенные примеры:
1. Простой редирект
Для простого редиректа условия задавать не обязательно, только правило.
2. Реврайт без редиректа
Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу news/happy получим news.html, а в адресной строке останется news/happy
3. Редирект с сохранением рейтинга страницы
4. Редирект для домена с www.site.com на site.com
Убираем у всех запросов вначале «WWW.»
5. Редирект для домена с site.com на www.site.com
6. Редирект с index.php (html,htm) на главную страницу
7. Редирект с index.html на папку (удаление из строки браузера index.html)
9. Чтобы вместо page.htm загружался файл page.html
10. Переезд с одного домена на другой
11. Редирект всех файлов в папке на один файл
12. Задание типа индексной страницы (php, html, htm и другие)
Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.
13. Убираем у всех запросов в конце index.php. Переадресуем на страницу без index.php
Поисковые системы плохо относятся к дубрям страниц. Чтобы этого избежать нужно удалить (склеить) страницы вида https://ваш_домен/ и https://ваш_домен/index.php
14. Определение кодировки, в которой сервер «отдает» файлы
Варианты: KOI8-R, UTF-8, Windows-1251
15. Определение кодировки на загружаемые файлы
Варианты: KOI8-R, UTF-8, Windows-1251
16. Кэширование для всех типов файлов по времени доступа
17. Кэширование для всех типов файлов по времени изменения
18. Кэширование для определённых типов файлов
19. Главная страница без дублирования
20. Редирект страниц без слэша в конце URL на слеш
Чтобы предотвратить ситуацию с индексированием страниц www.site.com/about и www.site.com/about/ как разных, ставим следущий код: Со страниц без слэша будет установлен редирект на «слэшевые».
21. Принудительная постановка замыкающего слеша
Следующий код всегда будет добавлять слеш в адрес URL вашего сайта, что хорошо помогает в области SEO сайта.
22. Удалить слеш в конце
23. Удаляем «category» из URL
24. Редирект URL страницы с папки в корень сайта
Например страница лежит на сервере в site.com/category/blue.html, но надо чтобы страница работала по запросу site.com/blue.html
25. Редирект от GET параметров
Например, нужно что бы со страницы /?action=page&id=15 был редирект на /page/15/
26. Редирект на мобильную версию сайта
Допустим, что мобильная версия расположена на поддомене m.site.com. Будем переходить на мобильную версию только с главной страницы основного домена.
Первой строкой мы проверяем USER_AGENT, определяем что он относится к мобильникам. (эту строку я детально не проверял, взял на просторе интернета, возможно она не совсем корректная, или есть более универсальная строка. Но на моих мобильных устройствах этот пример работает)
Второй строкой проверяем что мы находимся на нужном домене (т.к. пример не универсальный)
Третьей строкой, мы проверяем, что находимся на главной страницы (без всяких параметров и прочего) и перенаправляем на поддомен.
27. Редирект на мобильную версию сайта (Универсальная версия)
28. Обработка ошибок Apache
29. Сохранение (загрузка) файлов вместо открытия
30. Переадресация с www.site.com/index.php?idc=4&marea=6 на www.site.com/
31. Редирект с поддомена на основной домен второго уровня
32. Изменяем переменные php и передаём обработку другому скрипту.
33. Убираем переменные php из запроса
(вырезаем из URI всё, что находится после знака вопроса)
34. Заперт входа на сайт
Запрещаем вход на сайт Интернет Експлореру (вернее, кто себя так определяет) и пользователям с определённого IP-адреса (xxx.xxx.xxx.xxx).
35. Закрываем от всех
36. Закрываем конкретный файл от всех
37. Разрешаем доступ только с одного ip
38. Запрещаем доступ с конкретных ip
39. Убираем из Урла (URL) расширение файла
php можно заменить другим расширением. Например: html, htm, shtml, asp
41. Запрещаем отображать содержимое директории, если нет индексного файла
Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.
42. Перенаправление с HTTPS на http
43. Редиректы в зависимости от времени
Когда нужно применять уловки типа содержания зависящего от времени масса вебмастеров все ещё используют CGI скрипты которые производят редиректы на специальные страницы. Как это может быть сделано через mod_rewrite?
Есть много переменных названных TIME_xxx для условий редиректа. В связке со специальными лексикографическими образцами для сравнения STRING и =STRING мы можем производить редиректы зависящие от времени:
Это выдает содержимое foo.day.html при запросе URL foo.html с 07:00 до 19:00 а в оставшееся время содержимое foo.night.html.
44. Редирект в URL с подчеркивания в дефис
45. Редирект в URL с больших символов на маленькие
46. Массовый редирект новых файлов
Предположим вы перешли на новую систему ссылок на вашем сайте и все файлы оканчивающиеся на старый id должны быть средирекчены. Сначала создаем в базе таблицу, которая содержит старый id и новый URL для редиректа.
old_id INT new_url VARCHAR (255)
Убрать PHP в ссылках и избавиться от редкой формы аллергии
Дата публикации: 2017-01-19
Причины аллергии
На самом деле проявление аллергической реакции у пользователей на URL, содержащих в себе такое расширение, встречается очень редко. Тут кроется опасность серьезнее!
Мы уже знаем, что PHP является главной технологией, позволяющей создавать динамические ресурсы. Сейчас на его базе разработано множество различных движков, автоматизирующих все операции по администрированию ресурса. Начиная с установки стилей страниц и заканчивая его пагинацией, SEO-настройками и другими тяжелыми для ручного способа процессами «доведения» сайта.
Предисловие
Сначала придется сделать небольшой экскурс. Самым популярным веб-сервером с поддержкой PHP уже долгое время остается Apache. Большая часть хостингом работает на нем.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Для глобальной настройки сервера предназначен httpd.conf. Но ведь на одном экземпляре Apache могут быть развернуто множество ресурсов. Понятно, что предоставить каждому сайту доступ к глобальной конфигурации никто не решится.
Через настройки данного файла можно максимально точно подстроить параметры сервера «под себя»:
Запретить пользователям доступ к определенным папкам.
Запретить переход из конкретного ресурса.
Установить поддерживаемые для загрузки графические форматы изображений.
Решаем проблему!
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Теперь нам нужно настроить параметры под свои нужды. Сначала разрешим внесения изменений в настройки сервера.
.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.
Глобальные настройки сервера Апач могут содержать запрет на исполнение некоторых команд, обычно это вызывает ошибку 500. Также подобную ошибку может вызывать неправильный синтаксис или ошибка, например пропуск пробела.
Запрет доступа для определенных IP-адресов или диапазонов IP-адресов
Запрет доступа с IP-адреса 123.123.123.123.
Разрешаем доступ только с определенных IP-адресов
Принудительное задание кодировки
Иногда требуется очистка кэша браузера.
Отмена перекодировки сервером
Создание собственных страниц с сообщениями об ошибках
При переходе, например, на несуществующий адрес, посетитель увидит сообщение сервера об ошибке, можно создать собственные страницы ошибок либо перенаправлять посетителя на другой адрес, как главная страница. Но для правильной индексации желательно не перенаправлять, а показывать страницу ошибки.
Строка ErrorDocument 404 http://site.ru/error/404.html указывает, что при ошибке 404 будет показан файл 404.html, который должен находиться в корне директории сайта. Если файл расположен в другой директории, измените путь к файлу или ссылке.
Редиректы
Редирект на .html
Пример, редирект с c site.ru/blog на site.ru/blog.html.
Редирект на страницу без слеша в конце адреса
Пример, редирект с c site.ru/blog/ на site.ru/blog.
Редирект на страницу со слешем в конце адреса
Редирект на страницу без index.php в адресе
Редирект на страницу без index.php в конце адреса
Редирект с www на без www
Редирект без www на www
Склейка доменов
Пример, у вас несколько доменов, но посетитель должен переправляться на один.
Редирект со старых статических url на новые
Пример редирект со страницы http://site.com.ru/id=21.
Защита от хотлинка
Если вы хотите запретить вставку изображений с сайта по прямой ссылке.
Защита от брутофорса
Разрешаем доступ к директории administrator только по протоколу HTTP, что отсеет некоторых ботов. Для каждой CMS нужно указать свой адрес, например wp-login, wp-admin и так далее.
Бытует легенда, что происхождения названия сервера Апач происходит не от названия индейского племени. Когда сервер был еще в самом начале пути, группа энтузиастов небольшие дополнения к коду, патчи (англ – patch), и «a patchy server» превратилось в Апач, а знаменитое перо на логотипе появилось позже.
В материале перечислены наиболее часто используемые примеры, а большинство возможностей даже не упомянуто, как модуль mod_rewrite, предоставляющий множество возможностей.
Статья писалась эпизодическими «набегами», так что если увидите ошибку, поправьте.