.htaccess中的RewriteRule不起作用

时间:2012-10-25 02:22:16

标签: php apache

我从来没有使用像“漂亮的网址”这样的东西,但我必须解决这个问题,而我却不知道如何。 所以我在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}

我不知道该怎么办呢。我甚至不知道在哪里寻求帮助。有人可以向我解释一下吗?提前谢谢。

1 个答案:

答案 0 :(得分: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}

因为(.*)(.*)与说[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标题中设置。