oicq12 2017-11-02 04:41 采纳率: 0%
浏览 471

请教apache静态规则写法

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^list_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$ list.php&a=$1&b=$2&c=$3&d=$4

以上为一般情况
可以生成如 list_1_2_3_4.html

现在我有个需求,需要改成这样
list_1_2-22_3-333_4.html 也就是有特殊符号“-”掺在里面,形成一个数值区间
这样的静态规则怎么写?? 本想直接改成 ([0-9]+)-([0-9]+),但不行

请懂的朋友,指点一下,非常感谢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 03:17
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要实现您描述的需求,可以使用正则表达式和Apache的RewriteEngine On来处理。下面是一个示例,展示了如何根据查询字符串中的值创建一个动态URL。

    # 创建一个新文件来存储规则
    cat > /etc/apache2/sites-available/your-apache-site.conf << EOF
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
    
        # 使用以下规则将查询字符串中的一部分替换为数字
        RewriteEngine On
    
        # 定义一个正则表达式模式,用于匹配具有特殊字符"-"的查询字符串
        RewriteCond %{QUERY_STRING} ^([0-9]+)-([0-9]+)$
    
        # 根据匹配到的查询字符串,生成新的动态URL
        RewriteRule ^list_([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$ list.php&a=$1&b=$2&c=$3&d=$4 [L,QSA]
    
    </IfModule>
    EOF
    
    # 启用新配置
    ln -s /etc/apache2/sites-available/your-apache-site.conf /etc/apache2/sites-enabled/your-apache-site.conf
    
    # 配置Apache
    a2ensite your-apache-site.conf
    

    这段代码会查找具有特殊字符"-"(例如"-"、"-2"等)的查询字符串,并将其替换为对应的数值范围。然后,它会生成一个新的动态URL,其中包含这些数值范围。

    请注意,这只是一个基本示例,实际应用时可能需要根据您的具体需求进行调整。此外,如果您正在使用的是Nginx而不是Apache,请查看相应的文档以了解如何在Nginx中实现类似的功能。

    评论

报告相同问题?