我的 httpd conf 文件中有这个重写规则:
RewriteRule (.*?)\.html $1.php?%{QUERY_STRING} [NC]
它工作得很好。但是,当我将它放入同一虚拟主机的 .htaccess 中时,它现在以 1 美元的价格返回整个文档路径,而不是 http 主机。它需要做的就是用“php”替换“html”。
我显然不明白 .htaccess 如何与重写规则一起工作。
我的 httpd conf 文件中有这个重写规则:
RewriteRule (.*?)\.html $1.php?%{QUERY_STRING} [NC]
它工作得很好。但是,当我将它放入同一虚拟主机的 .htaccess 中时,它现在以 1 美元的价格返回整个文档路径,而不是 http 主机。它需要做的就是用“php”替换“html”。
我显然不明白 .htaccess 如何与重写规则一起工作。
您需要在规则的目标中添加前导斜杠:
RewriteRule (.*?)\.html /$1.php?%{QUERY_STRING} [NC]
此外,您也可以摆脱?%{QUERY_STRING}
目标中的位。如果没有? .
看着这丑陋的东西,我的眼睛几乎要流血了……
RewriteRule ^(.*).html?(.*)$ $1\.php?$2 [NC]
RewriteRule ^(.*)\.html$ $1.php [nc]