【问题标题】:Ending with period using Mod Rewrite使用 Mod Rewrite 以句点结尾
【发布时间】:2009-12-16 16:44:25
【问题描述】:

我想知道如何在我的网址末尾添加句点。目前,如果我有网址:

http://www.mydomain.com/Page/I.D.K.

获取信息的页面会返回

书名:I.D.K(没有结束句号)

这也发生在其他标点符号上,它会影响我的页面错误地显示信息。感谢您的关注,希望有人知道解决方案。

我在我的 htaccess 文件中使用以下内容:

RewriteRule ^([^/.]+)/?$ /index.php?Page=$1 [L]
RewriteRule ^([^/.]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2 [L]
RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2&Level2=$3 [L]
RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2&Level2=$3&Level3=$4 [L]

【问题讨论】:

  • 你能用 Markdown 格式化你的 .htaccess 文件吗?这将使我们更容易阅读和帮助您。谢谢!

标签: .htaccess mod-rewrite punctuation


【解决方案1】:

好的,问题几乎解决了。如果我尝试做Artist1 & Artist2& 仍然会破坏我的字符串,但我只会使用字符串替换来用其他东西替换那个符号。无论如何,为了在任何地方都允许标点符号,即使在最后,我在我的重写规则中用* 替换了所有+。这是它现在的样子:

RewriteRule ^([^/.]*)/?$ /index.php?Page=$1 [L]
RewriteRule ^([^/.]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2 [L]
RewriteRule ^([^/.]*)/([^/]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2&Level2=$3 [L]
RewriteRule ^([^/.]*)/([^/]*)/([^/]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2&Level2=$3&Level3=$4 [L]

希望这可以帮助其他有类似问题的人。

【讨论】:

    【解决方案2】:

    我假设它位于http://www.mydomain.com/。这是我将用于第二条规则的内容(然后可以转换为其他规则):

    RewriteRule ^([A-Za-z0-9\-,]+)/([A-Za-z0-9.\-,]+)/?$ /index.php?Page=$1&Level1=$2 [L]
    

    这将匹配以下内容:(并允许在 Level1 中使用连字符、逗号和句点)

    IDK/Jump.ing.
    IDK/Jump.ing./
    

    但不是:

    S$!LV/J
    

    我尝试将我的选项列入白名单(例如/[A-Z]/),而不是将它们列入黑名单(/[^3-5]/)。我确信这两个选项都有争论,但我喜欢白名单主要是因为我可以控制可以使用的内容。如果我没有将它包含在我的列表中,则它不是一个有效的选项。当然,如果您接受很多选项,那么这可能会产生一些非常长的字符类或诸如此类的东西。如果有人去http://www.mydomain.com/Page/I.D.K.&somevariable=somevalue 怎么办?它可能会破坏你的脚本(如果这个人很聪明)。您的 RewriteRule 会将它们发送到 /index.php?Page=Page&Level1=I.D.K.&somevariable=somevalue。完全不是你预期的那样。

    【讨论】:

    • 这似乎无法正常工作。基本上黑名单会更容易,我只想告诉它只在反斜杠处中断,因为字符串中会有各种标点符号。以下是一些示例网址:
      www.mysite.com/Artist/Jay-Z/ www.mysite.com/Artist/T.I./ www.mysite.com/Artist/Lil' Wayne/ www.mysite。 com/Artist/3OH!3/ 
      所以会有各种各样的,包括空格,我需要我的代码获取的所有信息。希望这些信息足以解决问题。感谢您的快速回复。
    • P.S.抱歉,我还不确定这个网站上的格式是如何工作的。
    • stackoverflow.com/editing-help - 这将告诉你如何使用 Markdown 进行格式化。但是,评论不能使用直接的 HTML。
    • 那么,让我直说吧。第一次捕获应该得到Page 变量,第二次捕获是Level1,等等。这都在您域的根目录中吗?我只是想确认一下,以便更好地提供帮助。
    • 是的,没错。一切都通过我的 index.php 文件。然后它抓取作为艺术家的“页面”,然后抓取作为艺术家名称的“级别 1”。页面永远不会包含标点符号,但级别 1、级别 2 等在某些时候会包含标点符号。再次感谢您的帮助
    猜你喜欢
    • 2018-03-20
    • 2022-01-17
    • 2012-07-14
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多