【问题标题】:Mod-Rewrite "Canonical URL's"Mod-Rewrite "Canonical URL's"
【发布时间】:2012-02-14 15:42:17
【问题描述】:

嘿,我如何使用 mod_rewrite 制作规范 URL(用于 Facebook“解析”)。

示例: 我有: example.com/index.php?page=eventdetails&id=241

我会创建一个规范的 URL,它应该如下所示:

example.com/eventdetails/241/脚本中会忽略的一些文本

我用这个例子测试了它,但它不起作用:

RewriteEngine on
RewriteRule ^/eventdetails/([0-9]+)/$ index.php?show=eventdetails&id=$1

.htaccess 文件位于“home”方向。

我没有找到任何确切的解决方案@google,所以我希望有人可以帮助我!

【问题讨论】:

    标签: mod-rewrite url-rewriting


    【解决方案1】:

    试试这个:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^eventdetails/([0-9]+)/?$ index.php?show=eventdetails&id=$1 [L,NC]
    RewriteRule ^eventdetails/([0-9]+)/([a-z0-9\-_]+)/?$ php.php?show=eventdetails&id=$1&name=$2 [L,NC]
    

    /? 表示末尾的可选/。所以example.com/eventdetails/241/example.com/eventdetails/241 将适用于这条规则。如果不使用事件名称,第一个将仅使用第一个规则。

    并且此 URL 将使用第二个(如果使用事件名称):example.com/eventdetails/241/event-name/。现在在这里,我不推荐+,因为它对搜索引擎优化并不友好,也许有些人会接受,但有些人不会。我推荐-

    我添加了L,以防您有其他规则和非大小写的 NC 标志。

    L: [L] 标志导致 mod_rewrite 停止处理规则集。在大多数情况下,这意味着如果规则匹配,则不会处理更多规则。这对应于 Perl 中的最后一条命令,或 C 中的 break 命令。使用此标志指示应立即应用当前规则,而不考虑进一步的规则。

    NC:使用 [NC] 标志会导致 RewriteRule 以不区分大小写的方式匹配。也就是说,它不关心字母在匹配的 URI 中是大写还是小写。

    来自:http://httpd.apache.org/docs/2.3/rewrite/flags.html

    【讨论】:

    • 谢谢!它“几乎可以工作”,我会在 URL 的末尾添加一些“随机文本”,其中包含“事件标题”,它应该/可以是这样的:example.com/eventdetails/43/Brennan+Heart+MCM +Feldbach 再次感谢您的回答,并为我的英语不好感到抱歉。
    • 谢谢!我忘了说,标题可以被脚本忽略,我从ID中读取内容。但是,我是一个假人:-XI 以这种方式解决了它: RewriteRule ^eventdetails/([0-9]+)/(.*)/?$ index.php?show=eventdetails&id=$1 [L,NC] I希望,这是做到这一点的“最佳”方式。谢谢!克里斯
    • 这也可以,但它只允许在您的 URL 中使用特殊字符,例如 `¼³²¦¬¤¢£@±`。这就是为什么我更喜欢使用我知道我只会使用的字符。
    • 如果我允许大写/小写字符、数字和以下特殊字符:+ - _ 我必须这样做吗? -> RewriteRule ^eventdetails/([0-9]+)/([a-zA-Z+\-_]+)/?$ index.php?show=eventdetails&id=$1 [L,NC]
    • 你不必使用A-Z,因为NC(在右边)所以它的意思是a = A。此外,+ 符号许多浏览器将它们转换为空格,以便您可以添加空格 (\s),作为加号,这是一个很好的答案:stackoverflow.com/questions/8446545/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多