- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени суток.
Добавил в htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.*$ $0.html [L,QSA]
RewriteCond %{THE_REQUEST} ([^\s]*)\.html(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
Чтобы убрать расширение ".html" для всех html файлов, так как сайт без движка.
Но теперь перестала работать обратная связь, использующая метод POST.
В PHP и htaccess совсем не разбираюсь.
Ребят поможет кто-нибудь?
Я не силен в этом, но на мой взгляд, набор правил странный...
RewriteCond %{REQUEST_FILENAME} !-d
Это для всех не физических файлов и папок.
Это если есть такой файл (на диске).
Т.е. правила взаимоисключающие.
Что было раньше и что хотели сделать?
---------- Добавлено 13.11.2018 в 18:11 ----------
Рецепт из сети, чтобы убрать расширение файла:
RewriteEngine on
#Если это не папка
RewriteCond %{REQUEST_FILENAME} !-d
#Если это файл html на диске
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
Что было раньше и что хотели сделать?
Раньше было "пустой htaccess" =))
Нужно убрать расширение ".html" для всех html файлов, так как сайт без движка
Чтобы при обращении например к
sitname.ru/filename.html
sitname.ru/filename
был ответ сервера 301 и редирект на
sitname.ru/filename/
Чтобы при обращении например к
sitname.ru/filename.html
sitname.ru/filename
был ответ сервера 301 и редирект на
sitname.ru/filename/
То есть, у вас статика, а вы хотите файлы *.html представить как директории?
Вот так, к примеру.
Всегда нужно учитывать порядок правил рерайта – сначала запреты, за ними редиректы, потом подстановки. Иначе что-нибудь работать не станет.
PS Немного поигрался с этим набором правил, теперь могу точно сказать, что в последней строке нужен флаг [END]. А флаг [L] вместо него способен вызвать "зацикливание" – и проверка для редиректа по .html, и подстановка тоже.
Ну и мой вариант до кучи. :)
RewriteEngine on
RewriteBase /
# Добавляем слэш в конце URL
# кроме файлов определенных типов
RewriteCond %{REQUEST_URI} !\.(php|html?|jpg|jpeg|gif)$
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
# Удаляем символы .html в конце URL
RewriteCond %{THE_REQUEST} ([^\s]*)\.html
RewriteRule .* %1/ [L,R=301]
# Редиректим на html-файл, если он существует
# и в конце URL (ищем в запросе) есть слэш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{THE_REQUEST} ([^\s]*)/
RewriteRule ^.*$ %1.html [L,QSA]
---------- Добавлено 14.11.2018 в 00:32 ----------
Про взаимоисключающие правила, кстати, я был не прав.
Там все логично.
VIC
RewriteEngine on
RewriteBase /
# Перенаправление при запросе *.html
RewriteCond %{REQUEST_FILENAME} \.html$
RewriteRule (.*)\.html http://sitname.ru/$1/ [R=301,L]
# Подстановка файла (если нет директории с тем же именем и есть файл)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule (.*)/$ $1\.html [END]
После добавления этого когда в htaccess у меня сайт перестал открываться
Konstantin K
RewriteEngine on
RewriteBase /
# Добавляем слэш в конце URL
# кроме файлов определенных типов
RewriteCond %{REQUEST_URI} !\.(php|html?|jpg|jpeg|gif)$
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
# Удаляем символы .html в конце URL
RewriteCond %{THE_REQUEST} ([^\s]*)\.html
RewriteRule .* %1/ [L,R=301]
# Редиректим на html-файл, если он существует
# и в конце URL (ищем в запросе) есть слэш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{THE_REQUEST} ([^\s]*)/
RewriteRule ^.*$ %1.html [L,QSA]
Спасибо Вам! Перенаправление происходит.
Консоль ругалась, что не подгружается JS и PNG
Методом тыка изменил вот эту строчку
RewriteCond %{REQUEST_URI} !\.(php|js|css|xml|txt|ico|jpeg|htm|html?|jpg|jpeg|png|gif|png)$
Добавил туда CSS, JS, PNG. Кончено я не уверен, но не лишний ли там вопросительный знак после "HTML"?
Подскажите пожалуйста, как можно сделать, чтобы сервер отдавал ответ
sitemane.ru/css/filename.css/ - тут должно стать 404
sitemane.ru/css/filename.css - тут пусть остается как есть 200
sitemane.ru/js/filename.js/ - тут должно стать 404
sitemane.ru/js/filename.js - тут пусть остается как есть 200
sitemane.ru/robots.txt/ - тут должно стать 404
sitemane.ru/robots.txt - тут пусть остается как есть 200
sitemane.ru/sitemap.xml/ - тут должно стать 404
sitemane.ru/sitemap.xml - тут пусть остается как есть 200
А так же, теперь при обращении по несуществующему url
например sitename.ru/blablabla
сервер отдает ответ 301 и редирект на sitename.ru/blablabla/ (со слешем)
Как можно сделать, чтобы в этом случае не было редиректа, и для страницы sitename.ru/blablabla сразу был ответ 404?
Это все превентивные действия или есть реальное основание редиректить с .html (сайт, будучи раскрученным, какое-то время работал на адресах с .html)?
Осн. приемы тут такие:
1) статик убираете в отдельный каталог и делаете рерайт в него только при наличии соотв. файлов.
2) при редиректе аналогично: прежде чем делать редирект, можно проверять, существует ли цель.
Но лучше перенести статик на какой-нибудь легкий двиг, заточенный под SEO, и не страдать фигней. Хотя с редиректом из движка все равно нужно будет повозиться, но только для норм. бэков, если они были (предполагается, что поисковики уже съели новую адресацию).
---------- Добавлено 14.11.2018 в 16:40 ----------
P.S. Для трэйлинг слэшей редиректы часто остаются шаблонными. Т.е. проверка существования цели не требуется. 404-ая может выдаваться и после редиректа (шаблонного).
miketomlin
Спасибо конечно!
Но есть поставленная задача и нужно ее решить.
Наводки я вам дал. Решайте.
я не уверен, но не лишний ли там вопросительный знак после "HTML"?
Знак "?" после символа означает, что он может стоять, а может нет.
Т.е. запись html? соответствует html или htm
Поэтому строку
RewriteCond %{REQUEST_URI} !\.(php|js|css|xml|txt|ico|jpeg|htm|html?|jpg|jpeg|png|gif|png)$
по идее можно переписать так:
RewriteCond %{REQUEST_URI} !\.(php|js|css|xml|txt|ico|jpe?g|html?|png|gif)$
По остальному навскидку не скажу — я всего лишь дизайнер. :)
Вечером проверю.