Вы должны включить фактический файл, в который вы переписываете. Использование ?foo=bar
не указывает на какой-либо конкретный файл.
Используйте следующее правило:
RewriteEngine on
RewriteRule ^(.*)/(.*)$ index.php?$1=$2 [NC]
Обратите внимание, что я указываю на файл index.php
. $1
заменяется тем, что совпадает с первым (.*)
, а $2
- вторым. Так что, если кто-то перейдет на foo/bar
, он будет переведен на index.php?foo=bar
.
Важное примечание: Если вы решите использовать (.*)
и примете любой символ для имени или значения переменной, и планируете использовать эту информацию в запросах к базе данных, вам наверняка придется избежать правильно использовать содержимое escape-функций вашей базы данных (mysql_real_escape_string
или pg_escape_string
) или подготовленные операторы.
Если у вас есть проблемы со стилем или элементами на странице, которые не отображаются правильно, потому что вы используете относительные пути, вам нужно будет использовать абсолютные пути, начиная с корня. В противном случае стиль ваших страниц, изображения и т. Д. Будут нарушены.
<link rel="stylesheet" type="text/css" href="/path/to/style.css" />