0

我正在尝试进行 mod 重写以获取此 url:localhost/test/index.php?hello

我为此页面创建了一个名为 hello.php 的文件,它位于 /test 文件夹中

澄清一下,我有另一个页面有指向我的 hello.php 的链接,但是正确的 url 是什么,所以当我单击链接访问我的 hello.php 时,我可以在 url 中显示 localhost/test/index.php?hello页。

以下似乎不正确:

 RewriteRule ^.*$ index.php?$1 [L]
4

2 回答 2

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=johnpage=contactaction=hello。你有index.php?hellohello没有内容或价值。

这可能就是为什么你甚至很难重写你的 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 都被重写为更短更友好,就像我原来的答案一样。

于 2013-06-30T07:35:34.370 回答
0
  1. 你不需要 .htaccess 2. 只要你使用 GET 参数 - 在 index.php 中使用它:

    if (isset($_GET['hello'])) include('hello.php');
    

这将在 index.php 中显示 hello.php 的内容

于 2013-07-01T08:21:35.540 回答