【问题标题】:Convert url to lower case using htaccess except query string使用 htaccess 将 url 转换为小写,查询字符串除外
【发布时间】:2014-07-23 21:08:41
【问题描述】:

我正在努力解决 htaccess 问题。

我需要将所有 URL 从大写转换为小写。但是单独的查询字符串应该是一样的。

例如,

www.tESTUrl.com/sOMePath/?q=SomeStringHere

应该转换为,

www.testurl.com/somepath/?q=SomeStringHere

请帮助解决这个问题。提前致谢。

【问题讨论】:

    标签: php .htaccess query-string lowercase


    【解决方案1】:

    首先你必须把它添加到你的 httpd.conf 中:

    RewriteMap lc int:tolower
    

    然后将以下代码粘贴到您的.htaccess

    RewriteEngine On
    RewriteBase / 
    RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].*
    RewriteRule ^ ${lc:%{REQUEST_URI}} [L,R=301]
    

    这段代码像从

    一样重定向 url

    www.tESTUrl.com/sOMePath/?q=SomeStringHere

    www.testurl.com/somepath/?q=SomeStringHere

    【讨论】:

    • REQUEST_URI 不包含域名,只包含 URL 路径。
    【解决方案2】:
    RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
    RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
    RewriteRule ^ ${lc:%{REQUEST_URI}}?${QUERY_STRING} [L,R=301]
    

    如果您以后想将查询字符串小写,第二行不是必需的,但很有帮助。我只是把它放在这里是为了完成。

    您必须将其添加到您的 httpd.conf:

    RewriteMap lc int:tolower
    

    【讨论】:

    • 能否请您告诉我是否需要将 RewriteMap 代码包含在任何 类似的标签中..?
    • 可以放在VirtualHost条目中:" RewriteMap lc int:tolower" ....
    【解决方案3】:

    首先你需要在httpd.conf 中添加这一行来定义一个RewriteMap 来处理小写转换:

    RewriteMap lc int:tolower
    

    然后将此规则添加到您的根 .htaccess 中:

    RewriteEngine On
    
    RewriteRule ^(.*?[A-Z]+.*)$ /${lc:$1} [L,NE,R=302]
    

    这不会影响QUERY_STRING

    【讨论】:

    • 谢谢@anubhava .. 请让我知道我应该在哪里准确放置 RewriteMap ?对不起,我是新手。
    • 可以放在httd.conf的底部。更改后您需要重新启动 Apache。
    • 并非所有设置都使用 httpd.conf。我相信这是 RedHad/CentOS 特有的。 Ubuntu/Debian 使用 apache2.conf。
    • 让我检查一下。谢谢
    • 同意 @JakeGould,在我的 MAMP 安装中也是 httpd.conf,但这个配置文件名肯定可以改变。
    【解决方案4】:

    我相信调整 the answer given here 可以处理等式中的 www.tESTUrl.com/ 主机名部分:

    RewriteCond %{HTTP_HOST} !^(.+\.)?(.+)?$
    RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L]
    

    然后我相信这应该适用于sOMePath/ 路径:

    RewriteMap lc int:tolower
    RewriteRule (.*?[A-Z]+.*)/?(.*)$ ${lc:$1}/?q=$2 [R]
    

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 1970-01-01
      • 2021-06-13
      • 2016-11-19
      • 1970-01-01
      • 2021-12-10
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多