输入网站URL后,.htaccess必须立即转到正确的文件和路径

ycl3bljg  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(118)

当正确键入网站URL时,如:https://example.amsterdam
它应立即将URL更改为:https://example.amsterdam/dist/index.php
我已经试着通过创建一个DirectoryIndex dist/index.php来解决这个问题了。唯一的线索是它只加载了页面,而不是URL中的正确路径。所以当文件打开时,你点击一个按钮,
HREF不再工作,因为路径不正确。
所以我基本上想在URL中的正确路径中打开文件。
我目前的.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

798qvoo8

798qvoo81#

这听起来确实像X-Y problem,因为“重定向”到DirectoryIndex文档通常是不可取的,而且听起来像是在补偿其他问题。例如,在链接中使用相对URL路径(以及指向静态资产),在应该隐藏的时候暴露/dist/子目录,等等。
不管怎样,回答你的问题...
我已经尝试通过创建DirectoryIndex dist/index.php来解决这个问题
如果您特别希望重定向请求(而不是内部子请求),那么除了DirectoryIndex指令之外,还可以设置DirectoryIndexRedirect on。换句话说:

DirectoryIndex dist/index.php
DirectoryIndexRedirect on

以上将触发302(临时)重定向。您可以使用http状态代码301进行永久重定向。有关其他选项,请参阅文档。
请注意,DirectoryIndex指令适用于您请求的任何目录。因此,如果您要请求/dist/,则上述指令将导致mod_dir查找/dist/dist/index.php(因为您指定了相对路径)。您可以使用DirectoryIndex /dist/index.php(根目录相对路径)始终为同一个文件提供服务,而不管是否请求了子目录。
或者,* 仅 * 重定向文档根目录,然后使用mod_rewrite。例如:

RewriteRule ^$ /dist/index.php [R,L]

同样,上面是一个302(临时)重定向。使用R=301进行永久重定向。
尽管你不需要在(可见的)URL中出现index.php,但只需将根目录重定向到/dist/,让标准的DirectoryIndex来完成这项工作。例如:

DirectoryIndex index.php

RewriteRule ^$ /dist/ [R,L]

参考编号:

  • https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryindexredirect
  • https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule

相关问题