htaccess rewriteRule в подпапке переменных на разных серверах - PullRequest
0 голосов
/ 27 ноября 2018

Я создаю API, он будет храниться в разных папках на разных серверах и будет иметь разные версии, например, я хотел бы превратить этот URL:

http://aserver.com/api/v3/something

в это:

http://aserver.com/api/v3/index.php?endpoint=something&version=3

И этот URL:

http://leserver4.com/afolder/api/v6/someone

в этом:

http://leserver4.com/afolder/api/v6/index.php?endpoint=someone&version=6

Как видите, единственным распространенным разделителем является эта строка: "/ api / v"

Я хочу иметь возможность обработать это в любой папке и отправить номер версии, поэтому я сделал это правило:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/v(\d+)/([^.]+)$ api/v$1/index.php?endpoint=$2&version=$1 [QSA,L,NC] # by anubhava

Но не работает, показывает ошибку 404

Я настроил apache2.conf следующим образом:

<Directory "/var/www/*/api">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

что я делаю не так?


Я отредактировал вопрос, включив в него файл конфигурации и весь файл .htaccess.

1 Ответ

0 голосов
/ 27 ноября 2018

Создайте новый каталог .htaccess внутри api/ с этим кодом:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^v(\d+)/([^.]+)$ v$1/index.php?endpoint=$2&version=$1 [QSA,L,NC]
...