如果你只想做 php 文件,试试这个。
RewriteEngine on
RewriteRule (.*)\.php$ /index.php?$1 [L]
澄清我的回答是做什么的。它为您提供更友好的 URL,听起来就像您所要求的。
所以你可以使用localhost/hello.php它,它将被internally重定向到/localhost/index.php?hello. 内部意味着他们永远不会看到localhost/index.php?hello并且将永远localhost/hello.php在他们的浏览器中看到。
您可以执行任何 URL,它将重写为 php 文件。例如localhost/index.php?newpage,您可以使用/localhost/newpage.php
希望这更清楚。
编辑
您想要相反,但我不知道您的 PHP 是如何构造的,但查询字符串通常是字段/值对。例如name=john,page=contact等action=hello。你有index.php?hello但hello没有内容或价值。
这可能就是为什么你甚至很难重写你的 URL。使用$_GET将需要一个值。
所以我会做的是,如果你的 URL 是这样使用字段/值对的
index.php?action=hello
然后在 index.php 文件中,您可以执行类似的操作
$action = $_GET["action"];
if($action == "hello"){
//show contents of hello, include a page or whatever
}
一旦你有好的 URL,就很容易重写它。
因此,如果您要显示的 URL 像
index.php?action=hello并且您想将其重定向到hello.php
你的 .htaccess 看起来像这样
RewriteRule ^action=([^/]+) /$1.php [R,L]
这会将其重定向到 php 文件。如果您不想显示重定向并将其保留为内部重定向,则可以删除该R标志并保留[L].
我个人不希望用户看到很长的查询字符串 URL 示例。mysite.com?page=music&artist=someartist&title=sometitle
因此,我所有的 URL 都被重写为更短更友好,就像我原来的答案一样。