【问题标题】:rewrite for uppercase and lowercase重写大写和小写
【发布时间】:2015-04-13 00:49:23
【问题描述】:

我正在尝试为我网站上的页面创建干净的 url。

http://localhost/user.php?id=50&name=İSMAİL

这个有效:

RewriteRule ^([^/]*)/([^/]*)$ /user.php?id=$1&name=$2 [L]

它有特殊的土耳其字符,它们是大写的。所以我想将这些重定向到同一页面:

http://localhost/50/İSMAİL

http://localhost/50/ismail

【问题讨论】:

  • 这应该在表单提交时处理。当一个简单的toLowerCase() 可以解决问题时,我认为没有理由使用 mod-rewrite 来检查每一个请求并且只会影响性能。
  • 我认为你可以让它保持原样并使用“[NC]”标志

标签: apache mod-rewrite


【解决方案1】:

Ravi 是对的,您需要标准化您的数据库数据。您仍然存储用户输入的名称,但是您创建了一个附加列,该列具有名称的标准化“slug”版本。试试library like URLify 为你做这件事。

然后,在您放入自己内容的 URL 中,使用 slug。如果您收到 URL 中的 slug 与该用户 ID 不匹配的请求,只需重定向到正确的 id + slug URL。

RewriteRule ^([1-9]\d*)/([^/]*)$ user.php?id=$1&name=$2 [B,QSA,L] 

user.php 中,仅通过$_GET['id'] 加载用户,然后比较名称。

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多