我有这段代码:
Options -Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^referral/([0-9]+)/?$ /referral.php?code=$1 [NC,L]
应该做两件事:
referral/test@email.com
到referral.php?code=test@email.com
结尾的网址。尝试了不同的格式,但出现了同样的错误:
未找到
在此服务器上找不到请求的网址/referral/test@email.com。
端口443上的Apache / 2.4.7(Ubuntu)服务器
第一行代码很好。
答案 0 :(得分:3)
RewriteRule ^referral/([0-9]+)/?$ /referral.php?code=$1 [NC,L]
RewriteRule
模式(即。^referral/([0-9]+)/?$
)与“以referral/test@email.com
结尾的地址”形式的网址不匹配。为此,您需要以下内容:
RewriteRule ^referral/([a-zA-Z0-9.@-]+)$ /referral.php?code=$1 [L]
这假定URL“以”结束“电子邮件地址,但这是完整的URL。正则表达式[0-9]+
仅匹配您似乎需要的数字,而不是电子邮件地址(字母,数字,“@”,“。”等)。
我还删除了NC
标记,并将不区分大小写加入正则表达式,因为我假设只有电子邮件地址可以是大小写混合,而不是URL路径?