Я создаю 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.
Создайте новый каталог .htaccess внутри api/ с этим кодом:
.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]