Модреврайт. Вопрос

Discussion in 'PHP' started by Nicca, 12 Feb 2008.

  1. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Как сделать чтобы ссылка вида http://site.com/file.php отображалась как http://site.com/file/


    Пробовал так:
    ^auth/$ auth.php [QSA]
    Не выходит.. Почему? (ЕРР 404)

    ^auth$ auth.php [QSA]
    А так http://site.com/file
    грузит нормально.

    Так как добавить правильно слеш в конец?
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    .htaccess

    Code:
    RewriteEngine on
    RewriteRule ^([a-Z0-9]+)/$ $1.php
     
    1 person likes this.
  3. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    RewriteRule ^(auth_form)/$ $auth_form.php

    Без слеша работает а с лешем ошибка 404
    Не могу понять что за х...я
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Че ты делаешь?
    Мое правило пиши
     
  5. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    А какая разница между тем что я написал и Вы?
     
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Code:
    RewriteRule ^([a-Z0-9]+)/$ $1.php
    Code:
    RewriteRule ^(auth_form)/$ $auth_form.php
    Считайте по буквам
     
  7. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    1. Ваш код не работает. Пишет Internal Server Error (Это уже лучше))
    Хочу разобраться в рег. выражении:
    ^([a-Z0-9] - обозначает клас допустимых символов.
    + -???
    Почему неправильный мой вариант?
     
  8. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    ^([a-Z0-9] на ^([a-z0-9] - Internal Server Error уже нет
    Но все же: со слэшом страницу не грузит а без - страница грузится
     
  9. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Я не даю не рабочий код, я сам проверил
     
    1 person likes this.
  10. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Ну а можете его хоть чуть-чуть обьяснить?
    И почему например выдает ошибку на
    RewriteRule ^([a-z_]{9})/$ $auth_form.php
     
  11. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Потому что у тебя запись неверная

    http://www.opennet.ru/docs/RUS/mod_rewrite/
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    RewriteRule ^([a-zA-Z0-9]+)/*$ $1.php
    Вот вполне рабочий вариант, работает как со слешем, так и без оного. Тока что проверено на апаче. В имени файла могут содержаться символы a-z, A-Z, 0-9, что указано в квадратных скобках. имя файла состоит из одного или более символов, на что указывает модификатор "+". Выражение берется в круглые скобки, чтобы далее использовать найденное как $1. То, что у вас написано - $auth_form - чушь какая-то. Шаблону $1 соответствует [a-zA-Z0-9]+. В конце в моем примере стоит /*, что означает ноль или более символов слеша.
     
  13. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Спасибо. Разобрался
     
  14. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    RewriteRule ^([a-z]+)/*$ $1.php

    http://www.site.com/test/
    на сервере работает нормально а на локоальном хосте со слешем в конце не хочет. Пишет файл не найден
    Почему?
     
  15. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    все отлично работает, не знаю что у вас за хост)

    Code:
    RewriteRule ^([a-z]+)/?$ $1.php [L]
     
  16. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Apache HTTP Server 1.3.33

    Блин и по-Вашему пробовал. Со слешем пишет 404 ошибку. А без - нормально.
     
  17. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    подкючен ли сам модуль рерайта к апачу? ну не знаю пропиши еще

    RewriteEngine On
    Options +FollowSymLinks


    читай статью мою в конце концов)
     
    1 person likes this.
  18. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    /thread27498.html
     
  19. Nicca

    Nicca Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Так в интернете у меня работает! А в локале нет.
    Повторяю - не работает именно только когда добавляешь слеш в конец, тоесть когда
    http://www.site.com/test/

    Без слеша все работает нормально

    А вот мой аксес:
    Может сдесь нужно включать какие-то допольнительные опции модреврайта?
     
  20. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Удали свой .htaccess и создай новый с содержанием:

    Code:
    RewriteEngine On
    Options +FollowSymLinks
    RewriteRule ^([a-z]+)/?$ $1.php [L]