2013-02-28 3 views
0

У меня есть файл .htaccess со следующим правилом:Apache URL переписывания - соответствующий каталог

RewriteRule ^api\/([A-Za-z0-9\-]+)\/?([0-9=a-zA-Z%]+)?\/?$ api.php?service=$1&param=$2 [QSA,L] 

По какой-то причине, он работает на моего хозяина, но не на моей локальной LAMP-установки. Есть ли что-то, что я делаю неправильно?

Apache версии: Apache/2.2.22 (Ubuntu)

Сообщение об ошибке: 404 Not Found ("Запрашиваемый URL/API/слово/поиск/не найдена на этом сервере")

Edit: Существует еще одно правило, переписывают, что работает, так что модуль mod_rewrite активирован:

RewriteRule ^([a-z]+)\.page$ index.php?template=$1 [QSA,L] 

Apache s жет конфигурации (локально):

DocumentRoot /var/www/Development-Env 
<Directory /> 
     Options FollowSymLinks 
     AllowOverride All 
</Directory> 
<Directory /var/www/Development-Env/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
</Directory> 

Edit # 2 Я пытаюсь соответствовать http://localhost/api/service/method/.

+0

пожалуйста, вы можете показать мне ссылку, что вы tryiing API/dir1/dir2/someging? – ddjikic

+0

@ddjikic Я обновил свое оригинальное сообщение. – Leonard

+1

Попробуйте добавить это поверх правила правил перезаписи 'Options + FollowSymlinks -MultiViews' –

ответ

1

Согласно к этому Options Indexes FollowSymLinks MultiViews в ваш вопрос, я думаю, проблема в MultiViews включена.

Вы можете попробовать добавить эту строку в верхней части переписывания набор правил:

Options +FollowSymlinks -MultiViews

1

возможно, что модификация модема apache не включена, или htaccess не используется. и не забудьте перед всеми, что

RewriteEngine On 

вы CNA также попробовать RewriteRule ^api/(.*)/(.*)$ api.php?a=$1&d=$2 [NC]

человек использовать CodeIgniter, если вам нужен API у вас есть апи я использовал этот

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

+0

Благодарим за отзыв. 'mod_rewrite' включен. – Leonard

Смежные вопросы