2015-02-24 2 views
0

У меня есть структура каталогов для моего APIs как:Htaccess для успокоительного АФИ подкаталогов не работают

api/ 
    cameras/ 
     index.php 
     ... 
     .htaccess 
    bar/ 
     set/ 
     index.php 
     scan/ 
     index.php 
     retrieve/ 
     index.php 
     list/ 
     index.php 

Прежде чем я добавил папку бара я имел это работаем с моей папкой .htaccess

RewriteEngine On 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php [L] 

Затем я добавил это, чтобы он работал.

RewriteEngine On 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule bar/set/(.*) bar/set/index.php [L] 
RewriteRule bar/scan/(.*) bar/scan/index.php [L] 
RewriteRule bar/list/(.*) bar/list/index.php [L] 
RewriteRule bar/retrieve/(.*) bar/retrieve/index.php [L] 
RewriteRule (.*) index.php [L] 

Все они работают, кроме первой в списке set. Что я сделал не так?

ответ

1

Я думаю, что порядок ваших условий может вызвать проблемы. Не видя URL-адреса, которые вы используете, я должен был бы предположить. Однако RewriteCond применим только к правилу, непосредственно следующему за ним. Вы устанавливаете новые правила между условиями и исходным правилом. Измените порядок и попробуйте его таким образом и посмотрите, как он работает.

RewriteEngine On 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 
RewriteRule ^bar/set/(.*)$ bar/set/index.php [L] 
RewriteRule ^bar/scan/(.*)$ bar/scan/index.php [L] 
RewriteRule ^bar/list/(.*)$ bar/list/index.php [L] 
RewriteRule ^bar/retrieve/(.*)$ bar/retrieve/index.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) index.php [L] 
1

RewriteCond только будет применяться к следующему RewriteRule. Вместо этого используйте этот код:

DirectoryIndex index.php 
RewriteEngine On 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule^- [E=HTTP_AUTHORIZATION:%1] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^(bar)/(scan|set|scan|retrieve)/(.*)$ $1/$2/index.php [L,NC] 

RewriteRule . index.php [L] 
+1

Nice clean implementation. Я буду использовать это! Благодарю. – Tom

+0

Добро пожаловать, рад, что вам понравилось. – anubhava

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