我有这个代码:
Options -Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^referral/([0-9]+)/?$ /referral.php?code=$1 [NC,L]
它应该做两件事:
- 阻止对文件夹内容的访问
- 修改以
referral/test@email.com
结尾的 URL 以referral.php?code=test@email.com
。
已经尝试了不同的格式,但出现了相同的错误:
未找到
在此服务器上找不到请求的 URL/引用/test@email.com。
Apache/2.4.7 (Ubuntu( Server at Port 443
第一行代码单独工作正常。
RewriteRule ^referral/([0-9]+)/?$ /referral.php?code=$1 [NC,L]
RewriteRule
模式(即。^referral/([0-9]+)/?$
( 与"以referral/test@email.com
结尾的地址"形式的 URL 不匹配。为此,您需要以下内容:
RewriteRule ^referral/([a-zA-Z0-9.@-]+)$ /referral.php?code=$1 [L]
这假设 URL 以电子邮件地址"结尾",但否则就是完整的 URL。正则表达式[0-9]+
仅匹配数字,而不匹配您似乎需要的电子邮件地址(字母、数字、"@"、"."等(。
我还删除了NC
标志并将不区分大小写合并到正则表达式中,因为我假设只有电子邮件地址可以混合大小写,而不是 URL 路径?
在查看了其他相关问题(尤其是这个问题(后,我终于通过添加以下行来使其正常工作:
Options -MultiViews