Подскажите с .HTACCESS или поделитесь своим : )

N4
На сайте с 22.09.2014
Offline
102
1132

Привет :gm:

что не так с .htaccess :confused:

Есть сайт на хостинге, необходимо

1 - убрать слеши на индексной страницы и на папках

то есть сделать site.ru/ ---> site.ru и site.ru/papka/ -----> site.ru/papka

( на индексной страницы убрал, в папкаx слеш все равно остался )

2 - убрать дубли типа site.ru/index.php на просто site.ru и site.ru/papka/index.php на site.ru/papka

на индексной страницы работает, в папках нет

3 - урать дубли типа site.ru//////////////// и site.ru/papka//////////////

нехрена не убрал, хотя правило вроде прописал..

4 - Вообще сделать все супер правильно

Не могу разобраться с правильным .htaccess :gm: :confused:

Перерыл инет толком не нашел ничего..

Сжатие файлов тоже вроде включено, а некоторые тесты пишут что нет.. :confused:

вот весь мой .htaccess:



ErrorDocument 404 /404/
ErrorDocument 403 /403/

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru [R=301,L]

# сжатие text, html, javascript, css, xml:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

# кеш браузера
<ifModule mod_expires.c>
ExpiresActive On

#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 1 days"

# Включаем кэширование изображений и флэш на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"

# Включаем кэширование css, javascript и текстовых файлоф на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"

# Включаем кэширование html и htm файлов на один день
ExpiresByType text/html "access plus 43200 seconds"

# Включаем кэширование xml файлов на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"

# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</ifModule>
apollion
На сайте с 08.01.2014
Offline
69
#1

Ну, например:

net44:
убрать слеши на папках

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]
net44:
убрать дубли типа site.ru/index.php на просто site.ru

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]


---------- Добавлено 08.02.2019 в 21:57 ----------

И не забудьте потом почистить кэш браузера и кэш сайта.
Надежный и недорогой хостинг (http://goo.gl/ESrxwC) Еще один Надежный и недорогой хостинг (http://goo.gl/kkJDYF) Продам старый блог в ЖЖ (2004 года создания)
J
На сайте с 20.02.2014
Offline
120
jkm
#2

Для первых трёх пунктов


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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru [R=301,L]

Заменить на


DirectorySlash Off

RewriteEngine On

RewriteCond %{THE_REQUEST} " (/([^?]*))?/index\.php"
RewriteRule ^ http://site.ru/%2 [R=301,L]

RewriteCond %{THE_REQUEST} // [OR]
RewriteCond %{REQUEST_URI} ./$ [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*?)/?$ http://site.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ /$1/index.php [L]
D
На сайте с 30.09.2018
Offline
53
#3

Js, css лучше сделать версионированием.

Сайт под ключ (https://devmastery.ru)
N4
На сайте с 22.09.2014
Offline
102
#4
devmastery:
Js, css лучше сделать версионированием.

Это как 😕

D
На сайте с 30.09.2018
Offline
53
#5
net44:
Это как 😕

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

M
На сайте с 04.12.2013
Offline
223
#6
net44:
Вообще сделать все супер правильно

Основа:


<IfModule mod_dir.c>
DirectorySlash Off
</IfModule>

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule (.*)/*$ http://%1/$1 [R=301,L]

RewriteRule (.*)/+$ /$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* /index.php

Последнее правило означает, что для «все супер» нужно использовать единую точку входа, в которой и должна выполняться обработка 404-ой. Для прочих ошибок, которые могут возникнуть до попадания в единую точку входа, например для 403-ей, нужно расширять конфигурацию, например: http://gency.ru/comment/51

Кое-что можно и убрать из основы, например первое правило, и обрабатывать обращения к доменным алиасам в рамках отдельного «сайта». Это же относится и к использованию др. портов/схем, например 443/HTTPS.

---------- Добавлено 09.02.2019 в 16:02 ----------

P.S. Адреса с index.php можно смело делать недействительными, если для них нет хороших бэков. Корректировку редиректом делаете только для реальных «тайпинов». Помимо трэйлинг слэшей к ним прежде всего можно отнести большие буквы, множественные слэши (не только в конце пути, но и между компонентами пути или в его начале), например: http://g09.ru/////Articles/////My-First-Article/////

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
N4
На сайте с 22.09.2014
Offline
102
#7
miketomlin:
Основа:

<IfModule mod_dir.c>
DirectorySlash Off
</IfModule>

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule (.*)/*$ http://%1/$1 [R=301,L]

RewriteRule (.*)/+$ /$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* /index.php

Последнее правило означает, что для «все супер» нужно использовать единую точку входа, в которой и должна выполняться обработка 404-ой. Для прочих ошибок, которые могут возникнуть до попадания в единую точку входа, например для 403-ей, нужно расширять конфигурацию, например: http://gency.ru/comment/51

Кое-что можно и убрать из основы, например первое правило, и обрабатывать обращения к доменным алиасам в рамках отдельного «сайта». Это же относится и к использованию др. портов/схем, например 443/HTTPS.

---------- Добавлено 09.02.2019 в 16:02 ----------

P.S. Адреса с index.php можно смело делать недействительными, если для них нет хороших бэков. Корректировку редиректом делаете только для реальных «тайпинов». Помимо трэйлинг слэшей к ним прежде всего можно отнести большие буквы, множественные слэши (не только в конце пути, но и между компонентами пути или в его начале), например: http://g09.ru/////Articles/////My-First-Article/////

Не разбираюсь в тех вопросах и что значит точка входа 😕 гуглил ничего не понял 😒

Взял рекомендации дискуссии

+ добавил правило для https ( правда скорость сайта упала 😕 по GOOGLE PAGESPEED почти на 30 пунктов .. с 90 до 60 с копейками ... это норм вообще ? 😕 )

Подскажите нормальный ли .htaccess ? 😕

    

ErrorDocument 404 /404
ErrorDocument 403 /403

DirectorySlash Off

RewriteEngine On

RewriteCond %{THE_REQUEST} " (/([^?]*))?/index\.php"
RewriteRule ^ http://site.ru/%2 [R=301,L]

RewriteCond %{THE_REQUEST} // [OR]
RewriteCond %{REQUEST_URI} ./$ [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*?)/?$ http://site.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ /$1/index.php [L]

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# кеш браузера
<ifModule mod_expires.c>
ExpiresActive On

#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 1 days"

# Включаем кэширование изображений и флэш на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"

# Включаем кэширование css, javascript и текстовых файлоф на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"

# Включаем кэширование html и htm файлов на один день
ExpiresByType text/html "access plus 43200 seconds"

# Включаем кэширование xml файлов на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"

# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</ifModule>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий