【问题标题】:htaccess code for language and slug语言和 slug 的 htaccess 代码
【发布时间】:2015-10-26 20:12:24
【问题描述】:

我正在尝试通过我的 htaccess 处理语言和 slug,但我遇到了一些问题。

我需要的是转这个:

http://www.domain.com/es/product/lorem-ipsum

进入这个:

http://www.domain.com/product.php?lang=es&slug=lorem-ipsum

这是我的 .htaccess

RewriteEngineOn
RewriteBase /

RewriteRule ^(es|fr)/(.*)$ $2?lang=$1
RewriteRule ^product/(.*)$ product.php?slug=$1 [QSA,L]

但这就是我在 product.php $_GET 中得到的

Array
(
    [lang] => 'es'
    [slug] => 'lorem-ipsum/product/lorem-ipsum'
)

********** 更新 ***********

如果我为此更改第一条规则:

RewriteRule ^(es|fr)/(.*)$ $2?lang=$1 [R]

它工作正常,但我的 URI 为此发生了变化:

http://www.domain.com/product/lorem-ipsum?lang=es

【问题讨论】:

    标签: .htaccess rewrite slug lang


    【解决方案1】:

    尝试:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^(es|fr)/(.*)$ /$2?lang=$1
    RewriteRule ^product/(.*)$ /product.php?slug=$1 [QSA,L]
    

    【讨论】:

      【解决方案2】:

      而不是匹配所有字符

      (.*)
      

      只有这样的字母

      ([a-zA-Z].*)
      

      【讨论】:

      • 蛞蝓可能包含数字,所以这对我来说不是一个有效的答案。谢谢!
      • @Peter 然后添加数字:([a-zA-Z0-9].*) 并不难
      • 我知道,但这并不能解决重复的 slug。谢谢!
      • @Peter 因为正则表达式不匹配它应该工作的斜线字符
      • 无效。 @Croises 解决方案就像一个魅力。还是谢谢。
      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 2016-05-11
      • 1970-01-01
      • 2016-01-07
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多