RewriteRule не с контактом и о словах

0

Так что в основном некоторые слова не работают с RewriteRule, это сводит меня с ума.

Это мой код htaccess, который не работает:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^contact/?$ index.php?page=contact [NC,L]
    RewriteRule ^about/?$ index.php?page=about [NC,L]

Используя это, я получаю эту ошибку: "Запрошенный URL-адрес/не найден на этом сервере".

Если я изменю "контакт" и "о" и поставлю какие-либо другие слова, то он отлично работает:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^contactme/?$ index.php?page=contact [NC,L]
    RewriteRule ^aboutme/?$ index.php?page=about [NC,L]

Это прекрасно работает, но я хочу использовать простой контакт и о.

Есть предположения?

  • 0
    У вас нет contact а по about каталога или файла?
  • 0
    У меня есть contact.php и about.php
Показать ещё 2 комментария
Теги:
.htaccess

1 ответ

0
Лучший ответ

Вы можете использовать это:

RewriteEngine On
Options -MultiViews
RewriteBase /
RewriteRule ^contact/?$ index.php?page=contact [NC,L]
RewriteRule ^about/?$ index.php?page=about [NC,L]

Эффект MultiViews выглядит следующим образом: если сервер получает запрос для /some/dir/foo, если /some/dir имеет MultiViews, и /some/dir/foo не существует, тогда сервер считывает каталог, который ищет файлы с именем foo. * и эффективно подделывает карту типов, которая называет все эти файлы, назначая им те же типы носителей и кодировки содержимого, которые она имела бы, если бы клиент попросил одного из них по имени. Затем он выбирает наилучшее соответствие требованиям клиента.

  • 0
    Спасибо за объяснение, я удалил MultiViews из apache2.conf и работает
  • 0
    Конечно, вы можете сделать это, если другая часть сервера / сайта не зависит от этой опции. Но обычно это не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню