首页 > 解决方案 > htaccess 中的正则表达式仅传递 1 个字符

问题描述

我确实在 htaccess 中使用了一个正则表达式来匹配我网站中类似 twitter 的用户名,但它只是将 $_GET['referer'] var 的最后一个字符传递给 php 文件。

这是正则表达式:^(\w){1,15}$

例如,如果我去 signup/johndoe/ 它将发送到 php 的“e”

这是我的 htaccess,如您所见,我不是 apache 服务器专家。爱4个你们,新年快乐。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^signup/(\w){5,15}/?$ signup.php?referer=$1 

标签: regex.htaccess

解决方案


你的问题是括号。代替:

RewriteRule ^signup/(\w){5,15}/?$ signup.php?referer=$1 

你要:

RewriteRule ^signup/(\w{5,15})/?$ signup.php?referer=$1 

这样它就会返回整个匹配的字符集,而不仅仅是最后一个。


推荐阅读