我正在尝试从 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>
答案 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
中的所有内容