【问题标题】:How to allow a dot (.) in htaccess?如何在htaccess中允许点(。)?
【发布时间】:2017-05-29 19:08:45
【问题描述】:

这是我的 htaccess 文件,出于某种原因,这条规则:RewriteRule ^profile/([^/]+)$ ./profile.php?name=$1 不允许链接中的点。它允许任何其他符号,但不允许点 (.)。我该如何解决这个问题?

Options -MultiViews -Indexes
RewriteEngine On

RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule ^(.*)$ - [F]

DirectorySlash On

ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
ErrorDocument 502 /brb.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} (.+)/$

RewriteCond %{THE_REQUEST} /profile\?name= [NC]
RewriteRule ^ - [L]


RewriteRule ^profile/([^/]+)$ ./profile.php?name=$1 


RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^([^/.]+)\.php - [F,L,R=404]
RewriteRule ^([^/.]+)$ $1.php [L]

在我的网站上,用户可以使用任何名称(因此任何字符)进行注册。 但是,假设我将我的虚构名称设置为“Mr.BoogieMan。”,指向我的个人资料的链接应该是 www.website.com/profile/Mr.BoogieMan。但由于点是我的名字,htaccess 不会让它通过。

【问题讨论】:

  • /profile/ 重定向是否有效?例如,http://www.website.com/profile/noDOThere/ 是否按预期工作?
  • 是的。它按预期工作。
  • 新策略:为什么您认为问题出在您的 htaccess 重写规则中?您的规则中没有任何内容可以与点交互。是不是你的 PHP 有问题?
  • 因为当我回显 get 参数时,我不会在回显中得到一个点。
  • 这是一个完全不同的问题!这很高兴知道,因为这意味着我们越来越近了。您在 profile.php 中的 $name 中获得“MrBoogieMan”这一事实意味着重定向正在工作。你能打开重写日志吗?这将是确定问题出在 Apache 还是 PHP 中的最佳方法。如果您打开重写日志并访问“Mr.BoogieMan”,您应该会看到一个带有点或不带点的日志条目。带点表示您的问题出在 PHP 中,没有点表示问题出在最后一条规则之外的其他规则中。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

点 (.) 是正则表达式中的特殊字符,意思是“任何字符”。要使用点 (.),您必须像这样对其进行转义:

\.

【讨论】:

  • 我试过 RewriteRule ^profile/([^/\.]+)$ ./profile.php?name=$1 但没有运气。
  • 您已将点包含在您的否定字符集中[^/\.],这意味着您不允许在配置文件中的斜杠之后使用点。这是你要找的吗?您可以使用您尝试重写的链接示例来编辑您的问题吗?
  • 不,我想允许网址中的点。我已经编辑了帖子。最后一部分。
猜你喜欢
  • 2017-07-03
  • 2013-10-08
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
相关资源
最近更新 更多