【问题标题】:removing whitespace and transform lowercase in url? how?在url中删除空格并转换小写字母?如何?
【发布时间】:2014-12-22 16:25:39
【问题描述】:

我正在尝试向覆盖 url 结构的 htaccess 添加重写规则 来自:

example.com?user=laura&baked=cakes

到:

example.com/user/laura/baked/cakes

虽然我设法做到了这一点,但我发现它没有在 url 中正确显示空格:即。 baked/Lovely Chocolate Cake/ 显示为 baked/Lovely%20Chocolate%20Cake/。 我试图实现的事情是覆盖空格(%20)并将其设为 - 或 + 并将其全部转换为小写。 到目前为止,我在阅读 SO 后设法得到了这段代码:

RewriteRule ^/user/([a-z]+)/baked/([a-z\ .*A-Zx0-9-_]+)$ cakesmade.php?id=$1&baked=$2

欢迎您的意见。 htaccess 语言似乎有点难以解释。

【问题讨论】:

  • 将大小写更改为小写需要更改 Apache 配置。你有权限吗?
  • 如果是 htaccess 文件,那么是的。
  • 不是 apache 服务器配置,您需要拥有管理员权限才能进行更改。

标签: .htaccess mod-rewrite removing-whitespace


【解决方案1】:

你可以这样做。在.htaccess(实际RewriteRule之前):

RewriteRule ^/user/.*[A-Z\ ] /linkChange.php?l=%{REQUEST_URI} [L]

linkChange.php

<?
    $link = $_GET['l'];
    $newlink = strtr($link," ABCDEFGHIJKLMNOPQRSTUVWXYZ","-abcdefghijklmnopqrstuvwxyz");
    header("Location: http://www.example.com". $newlink,TRUE,301); exit;
?>

【讨论】:

  • 感谢克罗斯。这很有帮助。使用我的代码,第二个括号的结构是否正确? RewriteRule ^/user/([a-z]+)/baked/([a-z\ .*A-Zx0-9-_]+)$ cakesmade.php?id=$1&amp;baked=$2 和您发布的代码,如果所有 url 都是小写的,我仍然希望应用 + 或 - 而不是空格,代码是否需要保持不变?
  • 您可以在RewriteRule 中使用[a-z.*0-9_-] 进行第二次测试。
  • 在 url 栏中:它显示了 url 两次,但即使我更正了 url 的第二部分(小写和 - 而不是空格)并转到那里,它也无法正确显示。数组大写,例如Lovely Chocolate Cake。数组也需要小写吗?还是我的代码有问题?
  • 使用那个:RewriteRule ^/user/([a-z]+)/baked/([a-z.*0-9_-]+)$ cakesmade.php?id=$1&amp;baked=$2
  • 对不起,我的措辞不是很清楚。我的意思是: example.com/user/laura/baked/cakes > 它显示预期页面example.com/user/laura/baked/Lovely%20Chocolate%20cake > 它显示预期页面@ 987654333@ > 这是链接更改后发生的情况,它不显示预期的页面,当我转到此页面时 example.com/user/laura/baked/lovely-chocolate-cake > 它不显示记录,就好像它不在数组中一样。 有什么想法吗?
猜你喜欢
  • 2022-06-10
  • 1970-01-01
  • 2014-12-13
  • 2013-02-04
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
相关资源
最近更新 更多