Я хочу переписать этот URL:
http://cyanogenupdatetracker.com/api/v1/show_devices.php
на http://cyanogenupdatetracker.com/api/v1/devices
Я использовал этот .htaccess файл
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^devices$ devices/
RewriteRule ^devices/$ /var/www/api/v1/show_devices.php
Это всегда возвращает 404 ошибки, даже при том, что я знаю, и на 100% уверено, что php файл существует в данном местоположении. Я попробовал все (никакой путь прежде php файл, пользовательский vhosts, rewritebase), но ни одно из этого не работает.
Апачская конфигурация для этого dir как следует:
Alias /api /var/www/api
<Directory /var/www/api>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
</Directory>
Я полностью сделан с этим. Кажется настолько простым (только несколько php файлов) и почему это имеет, чтобы быть что трудно, только упростить URL для создания их более хорошими.
Что я делаю неправильно?????
Я думаю, ваша проблема заключается в том, что в контексте файла .htaccess
] Pass Through подразумевается.
Фактически это означает, что ваше RewriteRule сопоставляется не с расположением файловой системы, а с путем URI. Это необходимо, среди прочего, для правильной работы с директивами Alias. Также проверьте это сравнение .
cyanogenupdatetracker.com/api/v1/devices
, вероятно, закончилось перенаправлением на что-то вроде cyanogenupdatetracker.com/api/v1/var/www/api/v1/ show_devices.php
Ваше правило должно было выглядеть так:
RewriteRule ^devices/$ show_devices.php
Во-вторых, моя любимая мозоль, почему вы используете .htaccess
, когда у вас явно есть доступ к основному файлу конфигурации apache? Цитата из руководства по файлам .htaccess :
Вам следует полностью избегать использования файлов
.htaccess
, если у вас есть доступ к конфигурации главного сервера httpd файл. Использование файлов.htaccess
замедляет работу вашего HTTP-сервера Apache . Любую директиву, которую вы можете включить в файл.htaccess
, лучше установить в основном файле (файлах) конфигурации Apache, так как она будет иметь тот же эффект с более высокой производительностью.
...
Аналогичным образом, директивы mod_rewrite во многих отношениях лучше работают в конфигурации основного сервера.
Исправился сам, изменив корневой каталог документа с / var / www / html на / var / www, поскольку папка api находилась за пределами / var / www / html.