Jump to content

koly32

User
  • Posts

    40
  • Joined

  • Last visited

Everything posted by koly32

  1. Действительно можно сделать простенькую проверку url типа: if(preg_match("/[A-Z]/",$_SERVER['REQUEST_URI'],$rVG)){ header("HTTP/1.0 404 Not Found"); } Прописав эти строчки в index.php в самом верху (опять же в зависимости как реализован движок) Тогда железно все в верхнем регистре в помойку 404 и все странички сайта будут открываться исключительно если запрос на них был в нижнем регистре. НО Помогите разобраться все таки а) Ясно. И логично) а вот если взять к примеру сайт htmlbook.ru там при переходе к примеру на htmlbook.ru/html/audio мы попадаем на htmlbook.ru/html/audio если htmlbook.ru/html/AuDio мы попадаем на htmlbook.ru/html/AuDio причем загружается одна и та же страница. При этом 404 ошибка не выдается. Или она ошибка 404 выдается роботу но пользователю все-таки загружается страница?? Или все-таки ошибка 404 не выдается и страница загружается вне зависимости от верхнего регистра а на поисковики можно подзабить?? Если взять vk.com то здесь к примеру при переходе на vk.com/article или vk.com/ArtiCle мы попадаем на одну и туже страницу (причем ошибка 404 не выдается) НО в url регистр тот с которым страница изначально например vk.com/ArtiCle Получается в vk.com регистр букв в url реализован путем редиректа 301 на правильную страницу причем как бы с правильным регистром?? Получается vk.com подстроились все-таки под пользователя) ? (Хотя если на конце слеш / то vk.com "как не правильный" и не подстроенный под пользователя выдает 404 хотя можно и 301 редирект на страницу без слеша)) Ясно. WWT извините конечно что столько вопросов. Просто хочу разобраться в этом раз и навсегда. Чувствую уже что истина где-то рядом))
  2. Не очень хорошо для пользователя) У меня так реализовано) Так и сделаю. А что если пользователь поставит где-нибудь ссылку на мой сайт в "не правильном" регистре т.е. site.ru/Vasya-99 и поисковики проиндексируют эту "не правильную" ссылку? получается с точки зрения поисковиков site.ru/Vasya-99 и site.ru/vasya-99 это две разные ссылки которые ведут на одну страницу site.ru/vasya-99 ? Судя потому как я это понял то да) А чтобы избежать дубля нужно похоже делать 301 редирект в файле .htaccess (Получается из-за верхнего регистра как бы две проблемы 1 поисковики 2 хостинг на котором сайт) на одном из форумов нашел: Будте внимательны к регистру. Короче говоря, если вы используете серверы / IIS Microsoft, то все в шоколаде. Но если вы поклонник Linux/UNIX, то проблем не избежать, поскольку они по разному интерпретируют регистр и randswhisky.com/AbC будет совсем не тоже самое что randswhisky.com/aBc. Идеальным решение будет если неверный регистр в урле будет автоматически редиректиться/канонизироваться на правильный урл. Есть специальный htaccess который может помочь в этом. Вот этот сайт Если честно то не очень то хочется добавлять в .htaccess столько строк. Хоть как я понял из перевода там сказано, что они сильно тормозить систему не будут, но все же: RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1] RewriteRule ![A-Z] - RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.*)$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*)F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q(.*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T]*)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^([^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y$2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 RewriteRule [A-Z] - [N] RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1 [R=301,L] Ну или если в файл httpd.conf то это. Работает быстрее опять же насколько я понял из перевода: RewriteMap lowercase int:tolower RewriteCond $1 [A-Z] RewriteRule ^/?(.*)$ /${lowercase:$1} [R=301,L] Чем дальше тем не веселее мягко говоря'( WWT Скажите пожалуйста что Вы об этом думаете?
  3. У меня на сайте все url заканчиваются слешем / (Настройка такая в файле .htaccess о чем выше писал) т.е. site.my/article/ или site.my/section/ именно поэтому я хотел добавить слеш / в конце url где частью url является логин т.е. чтобы так было site.my/Vasya.Pupkin-99/ (стандартно везде чтобы было), а поскольку из-за точки . в логине который является частью url на конце слеш / не ставится (нужно допиливать пару строчек в файле .htaccess о чем тоже писал выше), а мне нужно чтобы везде было со слешем я принял решение): 1 Убрал все слеши / на конце url. Прописал в файле .htaccess : RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC]RewriteRule ^(.*)(/)$ $1 [L,R=301] изначально было так. убрал: RewriteCond %{REQUEST_URI} /+[^\.]+$RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 2 Добавил в регулярку для логина еще разрешенных символов: $NoStop = "/^[a-z0-9\_\-\+\@\$\~\.\=]{3,20}$/i"; Теперь эти требования отменяются:1 только латинские буквы или цифры , а так же допускаются знаки _.- 2 не может начинаться с _.- и заканчиваться соответственно тоже 3 не могут повторятся символы подряд например -- или -_ или -. и т.п. Логин может быть от 3 до 20 символов и латинских букв и быть хоть таким: site.my/--~-_@_.= что опять же не очень хорошо наверно. Ну что же я решил проблему со слешем на конце url просто убрав его. А над такой допустимостью символов даже латинских в логине который будет в url еще надо подумать. Даже регистр букв важен вроде как..Т.е. site.my/Vasya.Pupkin-99 и site.my/vasya.pupkin-99 Могут восприниматься поисковиками как разные страницы. Об этом пишут в инете. Что вы думаете по этому поводу?
  4. А разве так можно чтобы символы могли повторятся друг за другом и чтобы логин начинался ну и заканчивался этими символами? Судя по ответу " 2. странное требование 3. тоже странное требование" то можно) Латинских символов ведь очень много получается их все можно использовать??? https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D1%82%D0%B8%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82_%D0%B2_%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B5
  5. 1. спецсимволов можно и больше разрешить 2. странное требование 3. тоже странное требование Дальнейшей возни с регулярками и редиректами я вообще не понимаю, можно сделать все намного проще и понятнее. Смотрел регистрацию на других популярных сайтах. Там в большинстве даже точку нельзя поставить) А вообще наткнулся вот на эту статью http://habrahabr.ru/post/40618/ У меня получается интеграция с CMS только что на свой движок. Ресурс тоже авторитетный вроде как) у меня опыта нет почти. поэтому я пытаюсь сделать чтобы переделывать потом много не пришлось. Если сейчас я думаю как с одной точкой в url разобраться, то что будет если разрешить больше спецсимволов)) Может наоборот тогда пробовать убрать слеш / или на худой конец .html добавить (.html я могу добавить)? Будет или так: site.ru/S-u_p-e-r.Nic или так: site.ru/S-u_p-e-r.Nic.html а желательно все же так '(: site.ru/S-u_p-e-r.Nic/ - куда лучше выглядит)
  6. Теперь столкнулся с другой проблеммой '( В файле .htaccess у меня прописано так: RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] Эти строчки ставят слэш / в конце url и ели в конце .html то слеш / не ставится. Т.е. изначально если так: site.ru/S-u_p-e-rNic то после: site.ru/S-u_p-e-rNic/ Казалось бы все нормально НО если в url (в данном случае в логине который является частью url) присутствует точка . то слеш / на конце url не ставится. Случайно обнаружил эту ошибку. Можно отказаться конечно от точки . в логине (который является частью url) но мне бы хотелось чтобы точку все же можно было ставить. Пробовал еще такой вариант он работает как и выше представленный и также отказывается ставить слеш на конце url если в url присутствует точка. RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1/ [R=301,L] Помогите пожалуйста дописать в один из этих кодов чтобы если есть точка . в url то в конце url ставился бы слеш / (если в конце url .html то слеш / не нужно) Если в регулярном выражении функции preg_match файла php я еще мог чего-то допилить то в файле .htaccess не получается. '(
  7. Только что сам допил)))))))) И так регулярное выражение для логинов-ников использующихся в url: $NoStop = "/^([a-zA-Z0-9]+[_.-]{0,1})+[a-zA-Z0-9]+$/";
  8. Здравствуйте. Нужно проверить логин пользователя, а т.к. логин будет использоваться еще и в url (будет личный кабинет пользователя) то требования к логину "самые жесткие": 1 только латинские буквы или цифры , а так же допускаются знаки _.- 2 не может начинаться с _.- и заканчиваться соответственно тоже 3 не могут повторятся символы подряд например -- или -_ или -. и т.п. Ниже составленная мною регулярка прекрасно проверяет такие вот примерно логины: SuperNic или Super-Nic Вот если нужно так к примеру то не пропускает: S-u_p-e-r.Nic Понимаю что эта регулярка должна повторятся как-бы что ли чтобы знаки с буквами тоже могли повторятся по требованиям выше представленных трех важных пунктов. Но как это сделать '(? как сделать чтобы такой вот логин мог проходить: S-u_p-e-r.Nic $NoStop = "/^[a-zA-Z0-9]+([_.-]{0,1})[a-zA-Z0-9]+$/";
  9. Еще Раз Большое Человеческое Спасибо за столь подробное объяснение. Буду и дальше штудировать данный сайт. Может и я кому что подскажу
  10. Спасибо большое. А можно еще вопрос на счет заголовка ответа клиенту Last-Modified. К примеру сайт http://htmlbook.ru не отдает дату последней модификации Last-Modified. Проверял на этом сайте http://last-modified.com/ru/ хотя Яндекс вроде как, рекомендует чтобы сервер (хостинг) обрабатывал заголовки Last-Modified. Вот теперь думаю делать эту обработку или нет..Проверял еще несколько крупных сайтов и они тоже не обрабатывают Last-Modified По видимому карты сайта достаточно для хорошей индексации поисковиками. Справка Яндекса https://yandex.ru/support/webmaster/robot-workings/robot-workings-faq.xml Скажите пожалуйста пару слов про Last-Modified :)
  11. Здравствуйте. Подскажите пожалуйста, какой из ниже представленных вариантов времени будет правильным, в фале sitemap.xml? Нужно указывать время по Гринвичу? или Московское? (на моем хостинге время Московское GMT+03:00) Если сейчас, к примеру, время по Гринвичу 04:30:50 а на хостинге соответственно 07:30:50 то в карте сайта должно быть: Вариант 1: <lastmod>2015-08-20T04:30:50+00:00</lastmod> Вариант 2: <lastmod>2015-08-20T04:30:50+03:00</lastmod> Вариант 3: <lastmod>2015-08-20T07:30:50+00:00</lastmod> Вариант 4: <lastmod>2015-08-20T07:30:50+03:00</lastmod> На своем "самописном движке" могу сделать любой из вариантов только вот какой правильный..
  12. Я бы Вам ответил бы если бы понимал о чем вы говорите так сказать) у меня работает как описал выше и я очень рад.
  13. ВСЕ СДЕЛАЛ ОГРОМНЕЙШЕЕ СПАСИБО!!!! Убрал правда |html| из RewriteRule \.(php|htm|html|swf|fla|xml|ico|jpg|gif|png|js|css)$ - [L] поствил перед RewriteRule ^.*$ index.php [NC,L] получилось вот так: AddDefaultCharset utf-8 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] RewriteRule \.(php|htm|swf|fla|xml|ico|jpg|gif|png|js|css)$ - [L] RewriteRule ^.*$ index.php [NC,L] ЕЩЕ РАЗ СПАСИБО)))) Все заработало) записей пока одна) будет много))
  14. Прописал так: AddDefaultCharset utf-8 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] RewriteRule \.(php|htm|html|swf|fla|xml|ico|jpg|gif|png|js|css)$ - [L] RewriteRule ^.*$ index.php [NC,L] Стили загрузились)) но только на главной странице(( И категории еще извиняюсь. Т.е. http://site.ru/ стили грузит!! http://site.ru/category/ стили грузит!! а вот http://site.ru/category/article.html вообще не открывает денвер ошибку выдает Not Found The requested URL /css/novaya-statya-novoy-temy.html was not found on this server.
  15. Спасибо смысл понятен буду пробовать но пока не получается.. Спасибо Вам за подсказки пробую но пока ничего не выходит(( После обработки файлом .htaccess с моими настройками получаются ссылки такого вида http://site.ru/category/article.html Как мне и нужно. Т.е. что он (файл .htaccess) делает - добавляет слеш / в конце категории (изначально категория без слеша) причем если в конце .html то слеш / не добавляется. Все хорошо работает но вот увы не грузятся CSS javascript картинки((
  16. Здравствуйте. Сделал ЧПУ на личном движке все прекрасно работает. Но теперь другая большая проблема. Настроил файл .htaccess теперь не грузятся CSS javascript картинки 1) Прописывал абсолютный путь для CSS такового вида <link rel="stylesheet" href="http://site.loc/temp/temp_1/css/style.css"/> БЕСПОЛЕЗНО!! 2) Перемещал файл CSS в корень сайта <link rel="stylesheet" href="style.css"/> БЕСПОЛЕЗНО!! Да и вообще чего только не делал. Уже неделю мучаюсь. Помогите советом пожалуйста. В файле .htaccess такие настройки: AddDefaultCharset utf-8 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] RewriteRule ^.*$ index.php [NC,L]
  17. Организовать навигацию для людей в 2 клика с главной до любого материала на сайте сложновато конечно или невозможно, а если возможно то получится невзрачный список ссылок которым на том месте будет не место так сказать, а вот в 3 клика возможно в принципе. А 3-и клика до любого материала и 3-й уровень вложенности материала на сайте как я понимаю уже это разные вещи? Ведь в url материал может быть представлен хоть пятым уровнем вложенности site.ru/html/html5/video/page-article а человек до любого материала с главной может зайти скажем в 3 клика, тогда получается уровень вложенности материала в url в данном случае 5-й будет иметь посредственное значение или вообще никакого получается так..думаю)
  18. А такое дело как "Карта сайта" (sitemap), где расположены ссылки на все категории, под категории и материалы сайта и до которых добраться с главной можно действительно в 2 клика, получается может (Карта сайта) так сказать послужить компенсацией того если вложенность материала в url 4-го уровня вот такая site.ru/html/html5/page-article??
  19. Получается 2 вариант Вы бы выбрали http://s019.radikal....5e87b833b7f.jpg. правильно?
  20. Здравствуйте. Делаю свой первый сайт на PHP тематика огородная (на картинках представлены лишь примеры адресов). И столкнулся с проблемой вложенности материалов на сайте (иерархия так сказать). Ниже представлены три ссылки и три варианта выбора соответственно. Подскажите пожалуйста как лучше сделать, какой вариант выбрать? Заранее спасибо. http://s019.radikal.ru/i601/1312/1f/fda38cf27fea.jpg http://s019.radikal.ru/i603/1312/de/45e87b833b7f.jpg http://s020.radikal.ru/i710/1312/a7/489e68081f60.jpg
  21. Никогда не пользовать конструкцию return exit (" "); это абсурд. Даже если написать это внутри функции/метода в вызывающий блок ничего не будет возвращено: void exit ([ string $status ] ) - exit ничего не возвращает, а просто отрубает выполнение с выводом строки в выходной поток. Вот посмотрите пример: <?php function function_name() { return exit ("fds");}$sd = function_name();echo 'что будет в итоге', $sdexit пользуй исключительно для завершения работы всего скрипта.По Вашему объяснению понял что вместе использовать return exit (" "); - Это в принципе не правильно!! А вот просто exit (" "); понятно и логично) "Завершение работы скрипта с выводом сообщения" Получается в моем примере выше верно будет следующее:<?php $a = 1; $b = 2; $c = 3; if ($b > $a) { exit("Переменная b больше переменной a!!!"); } else { echo "Переменная b меньше или равна переменной a!!!"; } ?> Я поэкспериментировал, но вот разницы между тем подключаю ( через include() или require() ) скрипт или скрипт прописан в основном файле,так сказать не заметил(( Наверно делаю что-то не так.
  22. Понятно вроде более менее спасибо. Буду думать) Спасибо. Буду экспериментировать с подключением через include() или require(). Чтобы как говориться разобраться и забыть)
  23. Я прочитал спасибо за источник. Но так и не понял когда нужно использовать return exit (" "); а когда просто exit (" "); В обоих случаях прекращается выполнение скрипта. Только в написании своих функций, чтобы выводить результат работы функции. Извините меня конечно, но можно по пальцам мне объяснить так сказать) Если использовать echo " "; то выводится сообщение и происходит выполнение последующего скрипта так сказать. А вот какая разница между return exit (" "); и exit (" "); ни пойму.
  24. Я прочитал спасибо за источник. Но так и не понял когда нужно использовать return exit (" "); а когда просто exit (" "); В обоих случаях прекращается выполнение скрипта. Я тоже понимаю что return возвращает результат функции но видимо не до конца)) По проще бы кто-нибудь объяснил когда надо return exit (" "); а когда просто exit (" ") ведь в обоих случаях происходит прекращение скрипта. Вот в чем дело.
  25. Здравствуйте. Подскажите пожалуйста когда нужно использовать return exit (" "); а когда просто exit (" "); ?? Результат на мой взгляд один и тот же - "Исполнение условия доходит до exit и выходит т.е. выполнение скрипта прекращается". Если использовать вместо return exit (" "); и exit (" "); оператор echo " "; то выполнение программы продолжается далее это я понял. Подскажите новичку по php) где уместно использовать return exit (" "); exit (" "); echo " ";? <?php $a = 1; $b = 2; $c = 3; if ($b > $a) { echo "Переменная b больше переменной a!!!"; } else { echo "Переменная b меньше или равна меременной a!!!"; } if ($b > $a) { return exit("Переменная b больше переменной a!!!"); } else { echo "Переменная b меньше или равна меременной a!!!"; } if ($b > $a) { exit("Переменная b больше переменной a!!!"); } else { echo "Переменная b меньше или равна меременной a!!!"; } ?>
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy