【问题标题】:URL Rewrite on PHP with query string to SEO-friendly使用查询字符串在 PHP 上重写 URL 以对 SEO 友好
【发布时间】:2012-02-22 02:08:43
【问题描述】:

我是 URL 重写规则的新手,想重写一些 URL。以下是我的问题:

我创建了两个规则(可以正常工作),它们将从 URL 中隐藏 *.php 扩展名。一种是将“/abc.php”重定向到“/abc”。另一个规则是将/abc 重写为/abc.php。这两个规则工作正常,我使用以下模式。

  • ^([^/]+)/?\.php$ --> 重定向到 --> {R:1}
  • ^([^/]+)/?$ --> 重写为 --> {R:1}.php

现在我有一个问题。我有一个类似于www.example.com/member?getuser=chris 的页面(请注意,由于之前的规则,它不是member.php?getuser=chrisyeung)。我想将 URL 重写为:

www.example.com/member/chris

我尝试遵循一些教程并使用以下模式:

`^/member/(_[0-0a-z-]+)` --> Rewrites to --> `^member?getuser={R:1}`. 

...但它不起作用。

我错过了什么?

【问题讨论】:

    标签: iis-7 url-rewriting


    【解决方案1】:

    我不明白你的前两条规则。将*.php 重写为*,将* 重写为*.php - 对我来说听起来像是一个循环。我假设您的文件名为.php,并且您希望您的访问者使用不带此文件扩展名的 URL。然后只需将* 重写为*.php

    对于您的会员页面,请使用:

    ^/member/([0-9a-zA-Z-_]+) member.php?getuser={R:1} [QSA]
    

    我更改了[] 中的有效字符列表并直接调用member.php - 无需发布其他规则。 QSA 用于传递更多 URL 参数。

    【讨论】:

    • 感谢您发布的答案。为了回复您答案的第一部分,我使用了两个规则,因为一个用于重写,另一个用于重定向。我刚刚在 URL 重定向模块中使用了“UserFriendlyURL Tool”,它有两个规则。
    • 没有两个规则在一起。客户可以使用以下两个地址访问我的网站:www.example.com/abc.php 和 www.example.com/abc。我只希望人们看到 www.example.com/abc,即使他们最后输入了 .php。
    • 对于第二部分,我仍然无法重写 URL。我上传了一张关于我的问题的图片,我应该输入什么?
    • 对不起。我不熟悉这个 IIS 对话。在您的设置中,规则的顺序非常重要。首先,我建议禁用您的两个主要规则并让成员规则正常工作。将^/member/([0-9a-zA-Z-_]+)$ 重写为member.php?getuser={R:1} 不会错,即使在 IIS 中也是如此。只要这工作正常,你希望能看得更远。
    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多