【问题标题】:Get mod-rewrite title after $_GET在 $_GET 之后获取 mod-rewrite 标题
【发布时间】:2012-10-30 20:50:16
【问题描述】:

我目前使用这个 mod-rewrite

RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)$ post.php?id=$1 [L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/$ post.php?id=$1 [L]

这允许我在$_GET['id] 之后的网址中添加帖子标题

http://foo.com/246/clouds

域名/获取/标题

如何从 url 获取/获取/返回标题部分,以便能够在 <title></title> 标签中使用它?

我知道如何获取$_GET['id']

$pid = (isset($_GET['id']) ? 'foo : Page - ' . $_GET['id'] : '');

返回

foo : Page - 246

作为页面标题但真的很想拥有

foo : clouds

【问题讨论】:

  • 真的让我吃惊的是,没有人提出这个建议;把它变成一个单线:RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/?$ post.php?id=$1&title=$2 [L]。最后一个/? 表示/ 重复0 或1 次。

标签: php mod-rewrite get


【解决方案1】:

更改重定向规则:

RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)$ post.php?id=$1&title=$2 [L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/$ post.php?id=$1&title=$2 [L]

然后您只需使用$_GET['title'] 来检索标题。

希望有所帮助!

【讨论】:

  • 我应该知道这一点,一定有这样的日子哈哈,谢谢菲利克斯
【解决方案2】:

您实际上不需要在重写中传递任何内容,例如添加title=$2,您可以访问包含/246/clouds$_SERVER['REQUEST_URI'],然后您可以将其分解为/,然后访问第二个键值。

$url_parts = explode('/',$_SERVER['REQUEST_URI']);
print_r($url_parts);

【讨论】:

  • 这正是我在阅读您的帖子之前所做的,我不想弄乱 mod-rewrite 更多的将 url 的标题部分转换为变量的情况,尽管 mod -rewrite 可能是更好的方法。
【解决方案3】:

将您的 RewriteRule 更新为 2. 参数

RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)$ post.php?id=$1&title=$2 [L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/$ post.php?id=$1&title=$2 [L]

print_r($_GET["title"]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2012-07-25
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多