2016-09-22 2 views
0

With Reference htaccess RewriteRule redirecting to parent directory?Слишком много перенаправляет ошибку и браузер показывает

Спасибо Франческо Касула, ваш ответ был очень полезным, теперь приложение перенаправляет из одного корня документа к другому. Я столкнулся с проблемой бесконечных перенаправлений.

У меня есть следующие репозитории с разной версией.

  1. /var/www/portal/version/1.1.1/public/ переплетены с (api.somedomain.com)
  2. /var/www/portal/version/1.1.2/public/
  3. /var/www/portal/version/1.1.3/public/
  4. /var/www/portal/version/1.1.4/public/

Я хочу, чтобы выполнить апи в следующем порядке (по версия)

api.somedomain.com/qr ---> /var/www/portal/version/1.1.1/public/

api.somedomain.com/v2/qr ---> /var/www/portal/version/1.1.2/public/

api.somedomain.com/v3/qr ---> /var/www/portal/version/1.1.3/public/

api.somedomain.com/v4/qr --->/var/www /portal/version/1.1.4/public/

Мой httpd.conf является

AliasMatch ^/v2/(.*)$ "/var/www/portal/version/1.1.2/public/" 
<Directory "/var/www/portal/version/1.1.2/public"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
    Order allow,deny 
    Allow from all 
</Directory> 
. 
. 
AliasMatch ^/v4/(.*)$ "/var/www/portal/version/1.1.4/public/" 
<Directory "/var/www/portal/version/1.1.4/public"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
    Order allow,deny 
    Allow from all 
</Directory> 

и .htaccess в каталоге/вар/WWW/портала/Versio п/1.1.4/открытый/содержит

<IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 
    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    RewriteCond %{REQUEST_URI} ^/v2/(.*)$ 
    RewriteRule ^(.*)$ v2/index.php [QSA,L] # p2 is the symlink name! 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

</IfModule> 

Когда я ударил https://api.somedomain.com/v2/invitebysms

я получаю слишком много перенаправляет ошибку и браузер показывает

https://api.somedomain.com/v2/invitebysms/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/

+0

Учитывая, что у вас есть доступ к файлу конфигурации основного сервера, вы значительно уменьшите сложность своего набора правил, если только разместите там свою конфигурацию, вместо того, чтобы переносить файлы .htaccess в микс. –

ответ

0

Я думаю, что вы в том числе:

Alias /v4/ /var/www/portal/version/1.1.4/public/ 
<Directory /var/www/portal/version/1.1.4/public/> 
    Require all granted 
    FallbackResource /v4/index.php 
</Directory> 

Насколько я понимаю, что вы пытаетесь выполнить, вышесказанное в конфигурации вашего сервера (полностью удалить файл .htaccess) будет делать то, что вы хотите. (Повторите для v2, v3 и т. Д.)

Я предполагаю, что вы работаете как минимум 2.2.16 или новее, а предпочтительно 2.4. Если нет, дайте мне знать, и мы попробуем еще раз.

+0

Спасибо, Боуэн, Моя версия Apache - 2.4.7. Я сделал те же изменения, что и вы, но теперь получил 404. –

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