Help - Работает только последнее правило

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

Статус темы:
Закрыта.
  1. megadude

    megadude

    Регистр.:
    6 сен 2006
    Сообщения:
    184
    Симпатии:
    66
    Имеется самый простой набор правил:
    Код:
    Options +FollowSymlinks
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    
    RewriteRule ^en/(.*)$ $1.php?lang=en [NC, L]
    RewriteRule ^fr/(.*)$ $1.php?lang=fr [NC, L]
    
    Но работает только последнее: localhost/sitename/fr/index
    При localhost/sitename/en/index - ERROR 404

    Если 2 последние строки поменять местами - работать будет localhost/sitename/en/index, а первое - нет

    Кто-нибудь?
     
  2. Delk0

    Delk0

    Регистр.:
    26 мар 2010
    Сообщения:
    284
    Симпатии:
    47
    Попробуй так
    Код:
    Options +FollowSymlinks
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^fr/(.*)$ $1.php?lang=fr [NC, L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^en/(.*)$ $1.php?lang=en [NC, L]
    
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Код:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    
    вот это по моему вообще лишнее
     
  4. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    Код:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^en/(.*)$        /$1.php?lang=en [NC]
    RewriteRule ^fr/(.*)$        /$1.php?lang=fr [NC]
    
    вроде должно работать так...
    проверять не стал, тк писал сразу тут
     
  5. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    может каталог en существует и правило пропускается, ещё универсальный вариант для всех языков с двумя символами
    Код:
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.{2})/(.*)/?$ $2.php?lang=$1 [QSA,L]
    
     
  6. megadude

    megadude

    Регистр.:
    6 сен 2006
    Сообщения:
    184
    Симпатии:
    66

    После удаления первой строки все заработало
     
Статус темы:
Закрыта.