Так что в основном некоторые слова не работают с 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]
Это прекрасно работает, но я хочу использовать простой контакт и о.
Есть предположения?
Вы можете использовать это:
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. * и эффективно подделывает карту типов, которая называет все эти файлы, назначая им те же типы носителей и кодировки содержимого, которые она имела бы, если бы клиент попросил одного из них по имени. Затем он выбирает наилучшее соответствие требованиям клиента.
contact
а поabout
каталога или файла?