2

我从来没有使用过像“漂亮的网址”这样的东西,但我必须解决这个问题,我只是不知道怎么做。所以我在php中有这个功能:

function niceUrl()
{
    // getting variable based on .htaccess
    $request = $_GET['tlederPageId'];
    var_dump($request);
    $vars = explode("/", $request);

    return $vars;
}

而这个 var_dump 只打印 NULL

这在.htaccess中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)(.*)/?$ index.php?tlederPageId=$1&%{QUERY_STRING}

而且我不知道这应该如何工作。我什至不知道去哪里寻求帮助。有人可以向我解释一下吗?提前致谢。

4

1 回答 1

0

好吧,让我们分解您提供的帖子:“漂亮的网址”:通常定义为 SEO 友好的网址,它描述了两件事

1、特定类别

2、该类别的特定主题

(注)这并不意味着你的主题必须有一个类别

使用上面的示例,一个漂亮的 URL 可能包含如下内容: http ://www.animals.com/dogs/

使用上面的示例二,一个漂亮的 URL 可能包含如下内容: http ://www.animals.com/dogs/bulldogs/

使用上面的“注释”:拥有一个相对域名不一定要有一个类别才能拥有一个主题;类似于: http ://www.bulldogs.com/american-bulldogs/

关于您的“.htaccess”,这行对我来说似乎很奇怪:

RewriteRule (.*)(.*)/?$ index.php?tlederPageId=$1&%{QUERY_STRING}

因为(.*)(.*)have 与说 [ANYTHING + ANYTHING = ANYTHING] 相同,尽管您的 .htaccess 会将任何请求转发到根目录中名为 index.php 的文件,其中 $_GET 变量为 tlederPageId 以及任何其他查询字符串通过了。

然后,您的工作就是确保传递给的 URL 首先通过 apache 然后通过 php 进行验证。

例如:如果您捕获“tlederPageId”并通过 PHP 对变量进行了一些预处理并确定 URL 无效(例如:http ://www.bulldogs.com/boxers/ ),这是您的有责任抛出 404,如果有人传递了一个有效的 URL,您将接受该 URL 作为 200 OK。这些需要在 php 标头中设置。

于 2012-10-25T02:55:18.097 回答