我正在尝试进行mod重写以获取此url:localhost / test / index.php?hello
我为这个页面创建了一个名为hello.php的文件,它位于文件夹/ test
中为了澄清,我有另一个页面,其中包含指向我的hello.php的链接,但是正确的url是什么,所以当我点击链接访问我的网址时,我可以在url中显示localhost / test / index.php?hello hello.php页面。
以下似乎不对:
RewriteRule ^.*$ index.php?$1 [L]
答案 0 :(得分:0)
如果你想只做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
需要一个值。
那么我会做什么,如果您的网址是这样的,使用字段/值对
index.php?action=hello
然后在index.php文件中,您可以执行类似
的操作$action = $_GET["action"];
if($action == "hello"){
//show contents of hello, include a page or whatever
}
一旦你有了很好的网址,就很容易重写它。
因此,如果您想要显示的网址是
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
所以我的所有网址都被重写为更短,更友好,就像我原来的答案一样。
答案 1 :(得分:0)
你不需要.htaccess 2.只要你使用GET参数 - 在index.php中使用它:
if (isset($_GET['hello'])) include('hello.php');
这将显示index.php
中hello.php的内容