2016-10-04 3 views
0

Привет я хочу, чтобы перенаправить www.domain.com/folder/* на www.domain.com/folder/public/* с помощью апачский .htaccess (Apache v 2.2.27)HTAccess Перенаправление вместо переписывания

Я написал следующее, но вместо этого перенаправляется или переписывается (здесь он перенаправляется правильно, например, www.domain.com/folder/login показывает страницу www.domain.com/folder/public/login)

.htaccess файл, помещенный под папка папка ниже

AddType application/x-httpd-php70 .php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^(.*)$ /folder/public/$1 [L,R=301] 
</IfModule> 

Если я удалю флаг R = 301 и просто держу L там, , то URL www.domain.com/folder ищет эту папку www.domain.com/folder/public/ , я не знаю почему?

Я использую это как файл .htaccess для моего laravel 5.3. Проект для удаления общей папки. Но я думаю, что файл .htaccess внутри общей папки дает этот конфликт.

файл .htaccess в папке общественности является

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

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /folder/public/$1 [L,R=301] 

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

    # Handle Authorization Header 
    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 

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

ответ

0

Имейте это правило внутри /folder/.htaccess:

AddType application/x-httpd-php70 .php 

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^(.*)/$ 
RewriteRule^%1 [NE,R=301,L] 

RewriteRule .* public/$0 [L] 

Также правило удалить под этим комментарием # Redirect Trailing Slashes If Not A Folder... от folder/public/.htaccess как вы не подвергать public/ в ваших URL.

+0

Спасибо за сообщение. Это дает маршрут не найден (404). Вероятно, потому что, когда мы говорим www.domain.com/folder, он ищет www.domain.com/folder/public/folder, который является неправильным (я не знаю почему), но это должно искать www.domain.com/folder/общественности. – crazy1337

+0

еще такой же выпуск. :(Не получается, почему он ищет текущий URL-адрес в самой общей папке. – crazy1337

+0

Ну, я не могу разделить URL-адрес здесь (он находится в режиме реального времени). Но когда я звоню/папке, он загружает маршрут для/public/folder или когда мы вызываем/папку/login он вызывает/public/folder/login – crazy1337