使用htaccess从文档根目录重定向到文件夹

时间:2018-11-28 19:36:39

标签: php .htaccess apache2

我的目录结构是这样,我的文档根目录是/

/
.htaccess
    /public

全部都在我的本地xampp服务器上。 服务器设置为侦听mydomain.local,在我的主机文件中,我将mydomian.local指向了localhost。

我正在使用以下.htaccess代码,并且在将mydomain.local用作地址时可以正常工作。

我遇到的问题是,当我使用localhost / mydomain作为地址时,它不起作用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php?path=$1 [NC,L,QSA]

使用localhost / mydomain作为地址时如何使它工作?

这样做的原因是因为我试图注册服务人员,但是它们只能通过https或localhost运行。

预先感谢

2 个答案:

答案 0 :(得分:1)

我修复了。

根文件夹.htaccess

RewriteEngine On
RewriteRule ^$ public/$1 [L]
RewriteRule ^(.*) public/$1 [L]

.htaccess公用文件夹

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]

谢谢

答案 1 :(得分:1)

您也可以通过更改重写规则以在匹配项中添加可选的mydomain/但不使用它,来在根目录保留单个.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Add optional group
RewriteRule ^(mydomain/)?(.*)$ /public/index.php?path=$2 [NC,L,QSA]
# Same with a non capturing group
RewriteRule ^(?:mydomain/)?(.*)$ /public/index.php?path=$1 [NC,L,QSA]

顺便说一句,您可以使用htaccess tester来检查规则在url上的重写效果

相关问题