Вопрос по htaccess и Mod Rewrite

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем stenley2, 28 июл 2011.

  1. stenley2

    stenley2 Постоялец

    Регистр.:
    16 янв 2011
    Сообщения:
    84
    Симпатии:
    16
    Ув. умельцы, прошу помочь разобраться с проблемкой.
    в htaccess прописан реврайт
    PHP:
    RewriteRule ^tovar/([0-9]*).html?$ index.php?content=tovar&id=$[L]
    Все работает, но если вводится "../tovar/123.html" (любой номер) которого нету или был удален, то "невозможно отобразить страницу" без номера ошибки.
    Если в базе есть номер 123.html то все отлично реврайтит.
    Нужно как-то проверку на существование прикрутить наверно :nezn:
    пробовал перед строчкой ставить
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteCond %{REQUEST_URL} -f
    и т.п. не получается.
    Подскажите плз. Буду ОЧЕНЬ признателен!:pioner:
     
  2. Longot

    Longot Создатель

    Регистр.:
    24 июн 2008
    Сообщения:
    11
    Симпатии:
    2
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^test/([0-9]*).html?$ /test.php?content=tovar&id=$1 [L]  
    
    Если файл есть в папке test то отобразится файл, иначе запуститься ПХП скрипт.
    Только что локально проверил, работает.
     
  3. stenley2

    stenley2 Постоялец

    Регистр.:
    16 янв 2011
    Сообщения:
    84
    Симпатии:
    16
    Спасибо, проверил, тоже не работает.:(
    Но дело в том что папки и файлов типо "test" как и файлов *.html нету, они генерируются автоматом реврайтом из "index.php?content=test&id=$1" - какой "ID" такой и присваивается номер для *.html

    Есть у кого еще предложения?
     
  4. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.736
    Симпатии:
    5.714
    stenley2 - вообще проверка на существование должна быть прописана с скрипте.
    Ну если все так криво, то оптимально отправлять юзера на главную
    PHP:
    ErrorDocument 404 http://yoursite.com
    либо на созданную вами 404
    PHP:
    ErrorDocument 404 http://yoursite.com/404.htm
     
  5. stenley2

    stenley2 Постоялец

    Регистр.:
    16 янв 2011
    Сообщения:
    84
    Симпатии:
    16
    Да, уже стоит
    PHP:
    ErrorDocument 404 /
    Все дело в том что ошибка не номерная.
    На счет "кривизны" пхп Вы наверно правы.

    Вообще желание исправить все это из-за "Ошибки сканирования" в вебмастер-тулс. (google)

    Попробую как вариант в mysql делать подмену новых id под старые ошибочные:tut: