Html to shtml htaccess

using .htaccess and a 301 redirect to redirect all *.shtml files to * .htm files

The title pretty well sums it up. I have a website that has been through quite a few «versions» over the years. At one point it was using SSI and many of the pages are named with a *.shtml extension. I am in the middle of changing to a new host because the current one is going away. While doing the work to transfer the domain name and site I figured I would take the opportunity to clean up the directory structure, orphan files, file extensions, etc. The current *.shtml files rank very well with most of the search engines and I do not want to loose that for something as minor as a file extension. Of all the ways I have found the get the search engines to keep the ranks while renaming to *.html is a 301 redirect. I need a little help with the implementation though.

Made copies of all the *.shtml files and placed them in the root directory.
Renamed the copies to *.html files. in the root I now have file.shtml and file.html

Читайте также:  Тег input, атрибут type

I tried adding «RedirectMatch 301 (.*)\.shtml$ http://www.example.com$1.html» to my .htaccess file. When I did this I was unable to see the site with a browser. I removed the «RedirectMatch 301 (.*)\.shtml$ http://www.example.com$1.html» from the .htaccess file and the site came back up.

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.

GET A PERSONALIZED SOLUTION

The host is GoDaddy and according to this they support what I want to do. However they do not specifically mention rewriting *.shtml to *.html. I have also seen something about using mod_rewrite but I have no idea what that is or how to use it.

Text from linked page:
————————— ———- ———- ———- ———- ———- ———- ——
How do I use a 301 Redirect Page?
Recently Updated: October 4, 2006 11:19 AM

If you redesigned one, some, or all of the pages of your Web site, but want to maintain your current search engine rankings, you can redirect Web site traffic from your old pages to the new

If you redesigned one, some, or all of the pages of your Web site, but want to maintain your current search engine rankings, you can redirect Web site traffic from your old pages to the new pages without losing your rankings using a «301 redirect.»

Search engine spiders will transfer your page rank and update any back links to the old page onto the new page when you use a 301 redirect. The code «301» is interpreted as «moved permanently.»

For example, you can redirect traffic from oldpage.php (.asp or .jsp) to «http://www.newdomain.com/newpage.html» and retain your search engine ranking and back links.

Use the code below to redirect traffic to your pages using a 301Redirect.

NOTE: Replace «oldpagename» with the name of your old Web page (the page you want to redirect traffic away from) and replace «newpage.html» with the name of the new Web page to which you want to redirect traffic.

PHP Code — save this as oldpagename.php

header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: http://www.newdomain.com/newpage.html»);
exit();
?>
ASP Code — save this as oldpagename.asp

Coldfusion — save this as oldpagename.cfm

ASP .NET — save this as oldpagename.net

Источник

Пример настройки файла htaccess php

Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!

Указываем индексный файл (который первым открывает при обращении к сайту)

DirectoryIndex index.php index.html index.shtml

Можно указать один или несколько файлов

Редирект htaccess php

Redirect / http://www.newsite.ru/

Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/

Redirect /katalog http://www.newsite.ru/newkatalog

Все обращения к katalog переадресуем на домен newsite.ru в раздел newkatalog

Редирект с сохранением рейтинга страницы

Redirect 301 /old/old.php http://www.yoursite.ru/new.php

old — пример пути старой страницы. new — пример пути новой страницы.

Редирект пользователя с конкретным ip

SetEnvIf REMOTE_ADDR 192.100.220.1 REDIR="redir" 
RewriteCond % redir
RewriteRule ^/$ /out.html

Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html

Склеивание www и http htaccess php

Уже многим SEO (продвижение и оптимизация) известно, что для Поисковых Систем адреса с/без www — это разные адреса и доступность сайта с www отрицательно влияет на индексацию и ранжирование. Поэтому зачастую SEO просят разработчиков склеить сайт без www (чтобы при обращении к сайту с www происходила пересылка на без www, т.е. только http)

RewriteEngine On 
RewriteCond % ^www.yoursite\.ru$ [NC]
RewriteRule ^(.*)$ http://yoursite.ru/$1 [L,R=301]

Теперь даже если Вы наберёте в адресной строке www.yoursite.ru, то сервер перешлёт Вас на http://yoursite.ru

Создание ЧПУ или Человеко-Понятных-Урлов htaccess php

RewriteEngine on 
RewriteRule ^article/([^/\.]+)/?$ article.php?id=$1 [L]

После добавления данной строки в .htaccess будут доступны два адреса для документа. Например: www.yoursite.ru/article.php?id=1 и www.yoursite.ru/article/1

RewriteEngine on 
RewriteRule cat/(.*)/(.*)/$ /art.php?$1=$2

В результате www.yoursite.ru/art.php?type=123 превращается в www.yoursite.ru/cat/type/123/:

RewriteEngine on 
RewriteRule katalog-saitov[/]*$ article.php?id=$1 [L]

Статья с технически адресом www.yoursite.ru/article.php?id=1 теперь будет доступна со своим понятным человеку названием www.yoursite.ru/katalog-saitov.

Редирект всех файлов папки на один файл

Например вы больше не нуждаетесь в разделе сайта articles и хотите перенаправить все запросы к папке /articles на один файл /non-articles.php. Поможет код ниже

RewriteRule ^articles(.*)$ /non-articles.php [L,R=301]

Защита от хотлинков htaccess php

Возможно Вам знаком такой вариант, когда изображения на сервер не закачивают, а используют просто ссылку на сайт. В результате для сайта-владельца изображения создаётся лишняя нагрузка трафик. Используем код ниже

RewriteEngine On 
#В строке с ?yoursite\.ru/ меняете данную конструкцию на УРЛ Вашего сайта
RewriteCond % !^http://(.+\.)?yoursite\.ru/ [NC]
RewriteCond % !^$
#Меняем /images/exit.jpg на другое изображение. Можно неприличное
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/exit.jpg [L]

Определение кодировки htaccess php

Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8

AddDefaultCharset UTF8 # кодировка файлов, в которой по умолчанию отдаёт документы 
AddCharset UTF8 .html # Пример: обрабатывает в данной кодировке html
AddCharset UTF8 * # Пример: обрабатывает в данной кодировке Все файлы

# Обработка в данной кодировке определённого файла

AddCharset UTF8 .html


CharsetDisable On # Отменяем перекодировку Сервером загруженных файлов
CharsetDefault UTF8 # Кодировка, передаваемая Сервером Браузеру по умолчанию
CharsetSourceEnc UTF8 # Принудительная Перекодировка ВСЕХ загруженных на сервер файлов

Создание своих страниц ошибок

Если Вам хочется видеть после неправильной ссылки другую страницу, сделанную, например, самим собой, то указываем в .htaccess следующий код (ну и соответственно делаем там свои страницы):

# ошибка сервера, неверный запрос 
ErrorDocument 400 /error/badrequest.html

# неавторизован
ErrorDocument 401 /error/authreqd.html

# вход запрещён
ErrorDocument 403 /error/forbid.html

# самая распространённая - страница не найдена
ErrorDocument 404 /error/notfound.html

# внутренняя ошибка сервера
ErrorDocument 500 /error/serverr.html
Видов ошибок на самом деле больше. Можете создать дополнительно и для них записи, опираясь на весь список

Запрещаем доступ

Скорее всего Вы столкнётесь с тем, что часть файлов и директорий надо будет закрыть от общего доступа.

Закрываем конкретный файл от всех

Разрешаем доступ только с одного ip

order deny,allow 
deny from all
allow from 192.111.37.125

Запрещаем доступ с конкретных ip

 
order allow,deny
allow from all
deny from 192.111.35.122
deny from 192.111.37.171

Убираем из Урла (URL) расширение файла

RewriteEngine on 
RewriteCond % !-d
RewriteCond %\.html -f
RewriteRule ^(.*)$ $1.php
# php можно заменить другим расширением. Например: html, htm, shtml, asp

Запрещаем отображать содержимое директории, если нет индексного файла

Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.

Источник

Оцените статью