2016-04-19 3 views
2

Я ищу для RewriteRule для моего Слим Апи положить в .htaccess, что позволяет мне использовать другую версию API, что-то вроде:Rewrite правило для разных версий API

i.e. 
v1/something -> v1/index.php 
v1/something/something -> v1/index.php 

i.e. 
v2/something-> v2/index.php 
v2/something/something -> v2/index.php 

i.e. 
p_v1/something-> p_v1/index.php 
p_v1/something/something -> p_v1/index.php 

Структура папок проекта является последующие:

  • апи
    • p_v1
    • v1
    • v2
      • index.php
      • другие ...

Спасибо за помощь заранее!

Редактировать

Это один работает отлично:

RewriteRule^v1/index.php [QSA,L] 

Но работает только с v1 (как и ожидалось), мне нужно, чтобы найти то, что работает с любой версией API.

Edit 2

Пока я нашел один обходной путь при добавлении вручную каждую новую версию API:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^v1/(.*)$ v1/index.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^p_v1/(.*)$ p_v1/index.php 

Но я до сих пор ищет что-то автоматизирован.

+0

использовать инструкцию типа nginx 'try_files' для apache2, вы можете сказать apache2, например, вы можете увидеть этот вопрос http://serverfault.com/questions/ 290784/what-is-apaches-equivalent-of-nginxs-try-files – Naumov

+0

Я не понимаю, как это можно применить к моей проблеме, можете ли вы сделать мне пример этого? – dvdciri

+0

Извините (я не понимаю, что вы задаете вопрос. – Naumov

ответ

0

Вы не определили, что исходный запрос URI, следующий за назначением начальной версии, обрабатывается этим правилом, поэтому я предполагаю, что ваш скрипт в index.php обрабатывает это.

RewriteEngine On 
RewriteRule ^/([A-z0-9_\.\-]+)/(.*)$ /$1/index.php [NC] 

NB. Это занимает любой буквенно-цифровой символ (плюс подчеркивание и дефис) перед первой косой чертой и использует это как каталог для обслуживания. Он также разрешает запрос без каких-либо изменений после указателя версии (например, http://example.api.com/v1/)

+0

Да, Slim Fragmework обрабатывает eveything, мне просто нужно перенаправить на правильный index.php в realtion на версию запроса. То, что вы мне дали, это то, что мне нужно, но дает мне 500 ошибок .. – dvdciri

+0

Я добавил редактирование на вопрос с чем-то, что работает нормально ..но по-прежнему не исправляет мою проблему, спасибо – dvdciri

+0

@ dvdciri - Извините, это научит меня не читать то, что я напечатал правильно. Отредактировано и должно работать сейчас. NB. Я добавил литерал. (точка) до совпадающих символов перед косой чертой, на всякий случай, если вы хотите 'http: // example.api.com/v1.1/something' – Wilkenism

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