.htaccess规则在丛非windows宿主环境中的帮助



我在为.htaccess编写规则时遇到问题,该规则将把HTML重定向到PHP。我一直使用302,直到它正常工作——然后我会改为301。我发现了几条描述这一点的帖子,但我遇到了问题——可能是因为我正在运行一个托管包,每个客户端都在一个虚拟/子文件夹中(很抱歉对托管环境的描述不好(。

我使用的规则是…

上的重写引擎

重写规则^(.*(.html$$1.php[R=302]

当我试着去https://dmcelebratealife.com/index.html我收到一条404消息,上面写着:

https://www.dmcelebratealife.com/var/www/vhosts/dmcelebratealife.com/public_html/index.php

我添加了以下内容,它似乎对我有效。

RewriteEngine on
RewriteRule ^(.*).html$ /$1.php [R=302]

这对我有效,并且与域无关。

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(?!.+.w{2,4})(.+)$ $1.php [L]
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(?!.+.w{2,4})(.+)$ $1.html [L]

前两个重定向到php文件(如果存在(。如果没有,则后两个将尝试HTML文件。

请注意,它不使用302,因为您不想告诉用户您在做什么。这会进行内部重定向。

这意味着如果用户键入

https://www.example.com/test

它将保留在URL框中,但以下文件将执行

https://www.example.com/test.php

最新更新