#php #apache #.htaccess #mod-rewrite
#php #apache #.htaccess #мод-перезапись
Вопрос:
Моя структура каталогов
domain.com/project1
domain.com/project1/,htaccess
domain.com/project1/api.php
.htaccess является
RewriteEngine On
RewriteRule /([^.] )/([^.] ).(xml|json) /api.php?version=$1amp;url=$2amp;type=$3
Итак, перейдем к domain.com/project1/v1/users.json должен направить меня к domain.com/project1/api.php?version=v1amp;url=usersamp;type=json но я получаю 404 высказывания
The requested URL /project1/v1/users.json was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Комментарии:
1. Что такое корень документа?
2. Попробуйте удалить
/
перед/api.php?...
3. Удаление / не исправило это. Что вы имеете в виду корень документа?
4. Работает ли ваш другой код .htaccess?
Ответ №1:
Это правило должно работать с /project1/.htaccess
:
RewriteEngine On
RewriteBase /project1/
RewriteRule ^([w-] )/([w-] ).(xml|json)$ api.php?version=$1amp;url=$2amp;type=$3 [L,QSA]
- Начальная косая черта не соответствует .htaccess
- Вы должны использовать якоря
^
и$
для получения точного соответствия - Экранирование ТОЧКИ в регулярном выражении
- Хотя это и не обязательно, но полезно использовать
QSA
флаг (добавление строки запроса).