2016-10-04 109 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