Показать полную графическую версию : [решено] неправильные линки!?
В общем такая вот ситуация: после того как с помощью .htaccess на сайте включил обработку SSI в обычных хтмл страничках перестала срабатывать 404 ошибка при переходе по таким ссылкам как http://site.ru/1.html/chtougodno Как при вот таком вот линке выдать 404 ошибку или перенаправить на нормальную страничку стандартными средствами, директивой в .htaccess например. Понимаю, что можно на пхп написать модуль, который будет смотреть на ссылку и удалять из нее все лишнее, но случаем нет решения попроще?
Vampire, если Вас не затруднит, покажите пожалуйста содержимое Вашего файла .htaccess, заранее благодарю...
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
Options +Includes
Options -Indexes
AddDefaultCharset Windows-1251
Вот отрывок, еще опустил настройку вывода страниц с ощибками вместо стандартных, но они нас вроде и не интересуют в этом топе.
если интересует mod_rewrite то например можно так:
без внешнего редиректа
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) 404.htm [L]
или с внешним
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) /404.htm [R,L]
поместить нужно после всех преобразований (если имеются), чтобы схватывал реальное имя файла...
Пробовал оба варианта в конец штаццеса дописать и ничего не изменилось. Чего это может значить? с мод-реврайтом какие-то проблемы? По пхпинфо выдается, что он включен!? Может кривизна ручек сказывается, с мод-реврайтом до этого момента не приходилось общаться ;)
Vampire, подразумевается, что .htaccess лежит в корне, и там же имеется файл 404.htm (его мы подсовываем в случае отсутствия требуемого файла)... т.е. 404 шлет mod_rewrite (ну это типа обходной вариант такой...)...
конечно же вместо 404.htm можно указать свой файлик (поменять в правиле)...
Ну это само сабой, что штаццес в корне сайта лежит, я в него код и добавлял. Ну и 404.html я тоже на свой 404.php, который тоже в корне лежит.
Было до:
ErrorDocument 404 http://tools-of-death.ru/404.php
ErrorDocument 403 http://tools-of-death.ru/403.php
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
Options +Includes
Options -Indexes
AddDefaultCharset Windows-1251
Стало:
ErrorDocument 404 http://tools-of-death.ru/404.php
ErrorDocument 403 http://tools-of-death.ru/403.php
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
Options +Includes
Options -Indexes
AddDefaultCharset Windows-1251
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) 404.php [L]
Редиректа не наблюдаю. :(
А Options FollowSymLinks имеется? Вообще ErrorLog лучше полистать - там наверняка что-нть интересненькое... и конечно же исключить возможные проблемы с форматом самого файла htaccess...
server-parsed »
а что это за обработчик? почему не знаю? попробуй может строку закоментить эту...
а.... все понял... сори
В логе ошибок по этому поводу не зафиксировано.
у тебя вроде все ок там - редиректится все... (только что проверил)...
Сейчас, да и когда ты проверял откатил штаццес на старый вариант, т.е. без предложенного тобой реврайта.
А редиректится когда дать заведомо ложную ссылку. Например http://tools-of-death.ru/7890.html А вот если попробовать так http://tools-of-death.ru/cold.html/56565/6589 то выводится страничка, находящаяся по ссылке http://tools-of-death.ru/cold.html
Откуда такие линки берутся ума не приложу, по статистике смотрю, они есть, видимо с других сайтов возникают, на сайте все линки проверял, не должно ничего такого быть...
а попробуй добавить AcceptPathInfo Offдолжен 404 возвращать...
500 вылезла :(
Строчка из эррор-лога:
[Thu Oct 18 00:57:36 2007] [alert] [client 217.23.191.155] ......./.htaccess: Invalid command 'AcceptPathInfo', perhaps mis-spelled or defined by a module not included in the server configuration
это из апача 2...
тогда еще вариант (вместо предыдущих моих) RewriteEngine On
RewriteRule \.(html?|php).+$ /404.htm [R,L]
в смысле - если что будет после расширения - редиректить на 404...
Теперь вообще любая страничка, даже существующая на 404 редиректится. А если учесть, что 404 страница у меня через несколько секунд редиректится на главную пагу, а та из-за кода опять на 404 идет, зацикленный редирект на 404 получился прям какой-то ;)
А апачь на сервере судя по пхпинфо версии 1.3.37
Apache Version Apache/1.3.37 (Unix) mod_fastcgi/2.4.2 FrontPage/5.0.2.2635 PHP/4.4.7 with Suhosin-Patch mod_ssl/2.8.28 OpenSSL/0.9.7e-p1
а какие расширения то есть? если htm нету, но "?" лучше убрать :)... RewriteRule \.(html|php).+$ /404.php [R,L]
.html и .php больше никаких. Сейчас вроде все нормально работает. А можно сделать такчто-бы редирект был не на 404 страницу, а на страницу, которая в ссылке присутствует, только срубать с сылки все лишнее?
ладно я спать пошел, завтра вечером думаю добьем с тобой этот момент ;) Есче раз спасибо за уже достигнутые результаты!
Vampire, вот типа этого... RewriteRule ^(.+\.(html|php)).+$ /$1 [R,L]
Спасибо есче раз, все просто замечательно работает ;)
Prisoner
23-10-2007, 11:17
Некоторым жителям форума пора делать доп. статус (как "Contributor") - "полный знаток" :).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.