【问题标题】:How to add dot in htaccess rewrite rule regex?如何在 htaccess 重写规则正则表达式中添加点?
【发布时间】:2016-02-06 20:23:32
【问题描述】:

我想创建像 dir view (example.com/dir1/dir2/file) 这样的 url 结构,为此我使用 htaccess mod rewrite as

RewriteEngine on
RewriteBase /
RewriteRule ^/?([a-zA-Z0-9\-=&_@/]+)/?$ get.php?u=$1 [QSA,L]

上面的代码工作正常,除非我尝试添加点状

RewriteEngine on
RewriteBase /
RewriteRule ^/?([a-zA-Z0-9\-=&_@/.]+)/?$ get.php?u=$1 [QSA,L]

.htaccess 中断。 “内部服务器错误”

【问题讨论】:

  • 你需要逃避它\.

标签: regex .htaccess mod-rewrite


【解决方案1】:

问题是,如果你在模式中添加一个点,那么你的模式也会匹配目标 url get.php 并将 get.php 重写为 get .php 在第二个重写周期。这会导致无限循环/重写循环错误。

你需要一个 RewriteCond 来防止这种情况:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/get.php
RewriteRule ^/?([a-zA-Z0-9\-=&_@/.]+)/?$ get.php?u=$1 [QSA,L]

【讨论】:

    【解决方案2】:

    您需要转义点 \. ,即:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^/?([a-zA-Z0-9\-=&_@/\.]+)/?$ get.php?u=$1 [QSA,L]
    

    【讨论】:

    • 无需转义点。还有其他事情发生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多