1) подскажите пожалуйста по поводу доп.параметров в ссылке. такой вопрос:
есть ссылка типа svadebki.com/mp3/song/15/12/
это чпу. она формируется из ссылки svadebki.com/mp3/msong.php?id=15&artist_id=12
но если добавить какие-нибудь символы к этой ссылки, она так и открывается, при этом никаких ошибок не возникает. пример: svadebki.com/mp3/msong.php?id=15&artist_id=12&qwerty
можно ли ссылки такого типа принудительно переводить на правильную ссылку? т.е. например на svadebki.com/mp3/song/15/12/
и влияет ли это как-то на безопасность?
немного покапавшись по другим большим сайтам нашёл такую же проблему:
ethology.ru/library/?id=12 и ethology.ru/library/?id=12?1111
или даже ethology.ru/library/?id=12&id=12&id=12 - всё открывается одинаково.
kp.ru/online/news/1596226/ и kp.ru/online/news/1596226/?=sdg
это или всеобщая проблема или нормальное поведение браузера открывать эти ссылки.
2) и второй вопрос. объясните пожалуйста что значит norec в htaccess? погуглил, но ничего внятного не нашёл.
спасибо.
большое Вам прибольшое спасибо!!!! работает ВСЁ!!!
огромное спасибо за помощь. реально. я мучался около года.
с другом ковыряли ковыряли. в результате пришлось сделать htaccess внутри папки.
вы просто wizard!
спасибо огромное ещё раз!
получился бесконечный цикл - FF поругался. (если заходить на главную и в папку mp3)
пока откатил обратно...
КОРНЕВОЙ htaccess
редиректы, кэширование и gzip-сжатие
####################################################
AddType application/x-httpd-php5 .php .htm .html
Options -Includes
DirectoryIndex index.php
AddDefaultCharset utf-8
Options All -Indexes
RemoveHandler .html .htm
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
ErrorDocument 404 http://svadebki.com/404.php
ErrorDocument 403 http://svadebki.com/
ErrorDocument 302 http://svadebki.com/
# редирект с .net на .com
RewriteCond %{HTTP_HOST} ^svadebki\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.svadebki\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.svadebki\.com$ [NC]
RewriteRule ^(.*)$ http://svadebki\.com/$1 [R=301,L]
# редирект с www на БЕЗ www
RewriteCond %{HTTP_HOST} ^www.svadebki.com$ [NC]
RewriteRule ^(.*)$ http://svadebki.com/$1 [R=301,L]
# переадресация с index.php на корень /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://svadebki.com/ [R=301,L]
# переадресация с index.php/ на корень /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php/\ HTTP/
RewriteRule ^index\.php/$ http://svadebki.com/ [R=301,L]
# слэш в конце домена svadebki.com/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !(.*)/$
#RewriteRule ^(.*)$ /$1/ [R=301,L]
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</ifModule>
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 604800 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 18144000 seconds"
ExpiresByType image/jpeg "access plus 18144000 seconds"
ExpiresByType image/png "access plus 18144000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 18144000 seconds"
ExpiresByType application/x-javascript "access plus 18144000 seconds"
#########################################
2) htaccess в папке mp3
ЧПУ
#######################################
ErrorDocument 404 /404.php
# ЧПУ MP3-мобильная версия и редирект --РАБОЧИЙ--
RewriteRule ^song/([0-9]+)/([0-9]+)/?$ /mp3/msong.php?id=$1&artist_id=$2&norec [L]
RewriteCond %{QUERY_STRING} id=([0-9]+)&artist_id=([0-9]+)$
RewriteRule ^msong.php$ /mp3/song/%1/%2/? [L,R=301]
# ЧПУ видео и редирект --РАБОЧИЙ--
RewriteRule ^videolook/([0-9]+)/$ /mp3/videolook.php?id_clip=$1&norec [L]
RewriteCond %{QUERY_STRING} id_clip=([0-9]+)$
RewriteRule ^videolook.php$ /mp3/videolook/%1/? [L,R=301]
# переадресация с index.php на /mp3
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /mp3/index\.php\ HTTP/
RewriteRule ^index\.php$ http://svadebki.com/mp3/ [R=301,L]
# переадресация с index.php/ на /mp3
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /mp3/index\.php/\ HTTP/
RewriteRule ^index\.php/$ http://svadebki.com/mp3/ [R=301,L]
###########################################
изначально так и пробовал - писать всё в корневом ht
но возникла проблема со вторым уровнем. там замешан ЧПУ, который работает только с корня, папки не видит. поэтому пришлось написать отдельный ht внутри папки mp3, к сожалению.
1) htaccess в корне. часть, которая отвечает за редирект с net на com:
RewriteCond %{HTTP_HOST} ^site\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.site\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]
RewriteRule ^(.*)$ http://site\.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
здесь всё работает. если в браузере набрать site.net, то редиректит на site.com - всё верно.
но если набирать site.net/mp3 или www.site.net/mp3 - то страница загружается, хотя должно вести на site.com/mp3
2) htaccess в папке mp3:
RewriteRule ^index\.php$ http://site.com/mp3/ [R=301,L]
это работает.
адреса с index.php
site.com/mp3/index.phpwww.site.com/mp3/index.phpsite.net/mp3/index.phpwww.site.net/mp3/index.php
ведут на site.com/mp3
всё правильно.
RewriteCond %{HTTP_HOST} ^site\.net\mp3\ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.site\.net\mp3\$ [NC]
RewriteRule ^(.*)/mp3/$ http://site\.com/mp3/$1 [R=301,L]
вот эта часть не работает. пробовал разные варианты. редиректа так и не добился
mod_rewrite конечно включен.
в смысле?
в общем задача остаётся:
в htaccess сделать постоянный редирект с site.net/mp3 на site.com/mp3
а почему запрет? наоборот нужно принудительно перенаправить с .net на .com
чтоб не создавать отдельную тему....
есть сайт - site.com и site.net
site.com - главный.
site.net - зеркало, которое редиректится на site.com
здесь редирект работает исправно.
на сайте лежит папка /mp3/
здесь появляется бок.
становится доступны адреса:
site.com/mp3/ и site.net/mp3/
не пойму как от этого избавиться. Нужно чтобы было доступно ТОЛЬКО site.com/mp3/
ведь корневой htaccess присваивает правила всему сайту. правильно же?
или в папке mp3 тоже нужно сделать свой htaccess со своим редиректом?