2015-10-21 4 views
0

Вот файл .htaccess Я пишу:RewriteCond с каретка не работает

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} ^api 
RewriteRule (.+) test/$1.php [L] 

Теперь, если я попал в мой браузер и введите в /api/asdf, я не получаю /test/api/asdf. Если я удалю карету, она работает так, как ожидалось. Также интересен, если я нахожу /bapi/asdf в своем браузере, он не работает, что кажется обратным, потому что нет каретки.

Я что-то не так? Как я могу совместить начало REQUEST_FILENAME, если каретка не работает?

ответ

0

Переменная %{REQUEST_FILENAME} не начинается с api. Таким образом, выражение ^api никогда не будет соответствовать. Имя файла запроса - это путь локальной файловой системы, на который должен ссылаться запрос.

Вы можете попробовать это вместо:

RewriteEngine On 
RewriteRule ^(api.+) test/$1.php [L] 

Это соответствует запросов, которые начинаются с /api.

+0

sory, api было только что составленным именем. путь локальной файловой системы соответствует этому пути, поэтому притворяйтесь, что есть каталог в корне, который является api. – tau

+0

@tau, тогда вам нужно '/' сразу после '^'. Предполагая, что вы на Linux или Mac, путь к файловой системе, вероятно, начнется с '/' –

+0

, я просто попробовал это, и он не работает, с или без косой черты. Я пробовал как ^/api, так и^api/и не работал. – tau

Смежные вопросы