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

Я хочу переписать этот 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 для создания их более хорошими.

Что я делаю неправильно?????

1
задан 25 July 2015 в 18:00
2 ответа

Я думаю, ваша проблема заключается в том, что в контексте файла .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 во многих отношениях лучше работают в конфигурации основного сервера.

1
ответ дан 4 December 2019 в 00:03

Исправился сам, изменив корневой каталог документа с / var / www / html на / var / www, поскольку папка api находилась за пределами / var / www / html.

0
ответ дан 4 December 2019 в 00:03

Теги

Похожие вопросы