Назад | Перейти на главную страницу

перезапись отказывается работать

Я хочу переписать этот 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.