重定向并删除URL .htaccess中的文件夹

时间:2018-09-30 11:58:02

标签: php .htaccess redirect url-rewriting dns

我正在尝试从 http://example.org/family/ 重定向到 http://example.org/family/public ,而不在url中显示公共文件夹,因此我想保留该url重定向后相同。

我一直在阅读许多不同的解决方案,但没有得到想要的结果。目前,我在“家庭”文件夹中有一个.htaccess,但它重定向到公用文件夹并显示404错误:

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /family
RewriteCond %{REQUEST_URI} !^/public
RewriteRule (.*) public/$1 [L]
</IfModule>

它应该在index.php中显示内容,但不显示。公用文件夹中的.htaccess是:

<IfModule mod_rewrite.c>    
    RewriteEngine On

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

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

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    RewriteRule ^/public/(.*) /$1 [QSA]

</IfModule>

2 个答案:

答案 0 :(得分:0)

这是您的解决方案,它将所有请求重定向到公共子文件夹

RewriteEngine On
RewriteBase /family
RewriteCond %{REQUEST_URI} !^/family/public
RewriteRule (.*) family/$1 [L]

答案 1 :(得分:0)

不知道这是否是最好的解决方案,但是您可以尝试ProxyPass:

如果您使用的是Apache,请编辑httpd.conf添加此行

ProxyPass /family http://example.org/family2/public 另外,请确保未注释以下行,以便您获得正确的代理和子模块来重新路由http请求:

LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_module modules/mod_proxy.so

然后重新启动服务器,它必须显示到family2/public的目录family中的所有内容