1

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

http://www.mydomain.com/Page/IDK

抓取信息的页面将返回

标题:IDK(无结束句号)

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

我在我的 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]
4

2 回答 2

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]

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

于 2009-12-22T19:22:11.670 回答
0

我假设它位于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/IDK&somevariable=somevalue怎么办?它可能会破坏你的脚本(如果这个人很聪明)。您的 RewriteRule 会将它们发送到/index.php?Page=Page&Level1=I.D.K.&somevariable=somevalue. 完全不是你预期的那样。

于 2009-12-16T20:58:04.583 回答