我遵循本教程,文件结构如下:
└── public
├── .htaccess
└── index.php
└── .htaccess
一切正常
根.htaccess看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
我对。htaccess不太了解,但我想这会将URI重新路由到public
目录。所以每个请求都到那里。
public目录如下所示:
<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
RewriteBase /auth/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
</IfModule>
上面的一切都如预期的那样工作,但我想增强它,使它像这样工作:
- URL
https://www.something.com/anything
保持不变 - 但是在服务器上它是这样处理的
https://www.something.com/index.php?q=anything
(技术上是https://www.something.com/public/index.php?q=anything
)
好了,我找到答案了。我编辑了根。htaccess,并将最后一行更改为:RewriteRule (.*) public/index.php?s=$1 [L]
整个文件现在看起来像:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
#RewriteRule (.*) public/$1 [L]
RewriteRule (.*) public/index.php?q=$1 [L]
</IfModule>
将URI重路由到public
目录的重写规则现在将URI重路由到索引的查询。