Я хочу переписать этот 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, пользовательские хосты, rewritebase), но ничего из этого не работает.
Конфигурация apache для этого каталога следующая:
Alias /api /var/www/api
<Directory /var/www/api>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
</Directory>
Я полностью с этим покончил. Это кажется таким простым (всего несколько файлов php) и почему это так сложно, просто чтобы упростить URL-адреса, чтобы сделать их удобнее.
Что я делаю не так?????
Я думаю, ваша проблема в том, что в контексте .htaccess
файл Пройти через подразумевается.
Фактически это означает, что ваш 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.