【问题标题】:can't escape dot (.) at my mod_rewrite code无法在我的 mod_rewrite 代码中转义点 (.)
【发布时间】:2011-12-11 04:33:38
【问题描述】:

我需要将我网站的以下地址:http://mysite.com/do.php?id=123.W456/789 转换为 http://mysite.com/123.W456/789

我几乎已经通过以下 .htaccess 文件在这个崇高的目的上取得了成功

DirectoryIndex mysite.php

RewriteEngine On RewriteRule ^([A-Za-z0-9\/.]+)?$ mysite.php?id=$1 [L]

其中..(点)字符的代码

这样的url字符串http://mysite.com/123W456/789很酷(即重写为http://mysite.com/do.php?id=123W456/789

但不会用点字符重写 url 字符串 - http://mysite.com/123.W456/789

有人可以帮忙吗?

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案1】:

    我们使用\. 来转义 htaccess 文件中的点字符,而不是它的 HTML 实体。使用 HTML 实体会使其认为您允许使用 &#; 字符,而不是 . 字符。

    【讨论】:

    • 那你还有什么问题,试着检查你的 Apache 错误日志。
    • 当我使用RewriteRule ^([A-Za-z0-9\/\.]+)?$ mysite.php?id=$1 而不是回显$_GET['id'] 我得到mysite.php
    • 显然,如果您允许所有字母数字字符、斜杠和点,您的重写规则将匹配几乎所有内容。你真的应该更具体,并使用像mysite.com/id/123.W456/789 这样的东西。 Apache 给你的错误是什么?
    • [Wed Oct 19 22:42:28 2011] [error] [client 87.252.227.84] File does not exist: /var/www/admin/data/www/site.com/10fhsdert, referer: http://site.com/10fhsdert/sad -无点
    • [Wed Oct 19 22:43:28 2011] [error] [client 87.252.227.84] File does not exist: /var/www/admin/data/www/site.com/10fhsdert - 10fhsdert 后加点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多