2016-10-04 118 views
0

嗨,我想重定向www.domain.com/folder/*使用Apache的.htaccess到www.domain.com/folder/public/* (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/ 文件夾,我不知道爲什麼?

我使用這個作爲我的laravel的根.htaccess文件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這條規則:此評論# Redirect Trailing Slashes If Not A Folder...

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] 

而且刪除規則folder/public/.htaccess只要你不暴露在你的網址public/

+0

感謝發佈。這沒有找到路線(404)。可能是因爲當我們說www.domain.com/folder時,它會查找www.domain.com/folder/public/folder這是不正確的(我不知道爲什麼),但是這應該查找www.domain.com/folder /上市。 – crazy1337

+0

仍然是同樣的問題。 :(不知道爲什麼它搜索公共文件夾本身的當前url路徑 – crazy1337

+0

嗯,我不能在這裏分享網址(這是在現場設置)。但是當我打電話/文件夾,然後它加載/公共/文件夾路線或當我們調用/文件夾/登錄它調用/ public/folder/login – crazy1337