我对.htaccess
和数字有点疑问。
我有一个目录
http://somedomain.com/directory/
当我向其添加数字时,我想使用htaccess来创建变量。
http://somedomain.com/directory/
RewriteRule ^[0-9]+$ index.php?action=viewclient&clientnumber=$1 [L]
当我输入此网址时,我希望创建客户端编号
http://somedomain.com/directory/5
但是,如果我没有添加任何数字,它仍然会创建$action
变量,其中包含空白$clientnumber
。
http://somedomain.com/directory/
如果网址中有数字但空白,我需要对htaccess进行更改仅添加这些变量。如果没有添加变量,则跳过此htaccess行。
三江源
编辑:我无法让网址正常工作。从提供的答案。我要去睡觉了将在周末重新检查。如果我把/目录/我得到我想要的。如果我把/ directory / 4或目录/ 87(任何数字)我得到404错误。
EDIT2 - WEIRD ???
我要睡觉了,但决定再试一次。选择了不同的客户。 URL是SAME格式。
一些客户工作(显示正确的页面),其他网址(CORRECT URL),显示404页面。
我会尝试&周末调试更多。 - 很奇怪。 (我将在index.php的顶部添加一个调试脚本/日志 - 以查看该页面是否正在加载。)
编辑3: - 我在index.php的顶部添加了一个小的日志脚本 - 它会记录有效/工作的URL,但如果它出现404错误则不会激活(错误是SAME格式的URL - 所以应该激活index.php - &然后我的index.php应该进行计算/检查以查看值是否有效。但它甚至没有到我的PHP脚本。
好的,我上床睡觉了 - 周末会重试。
答案 0 :(得分:0)
RewriteRule ^[0-9]+$ index.php?action=viewclient&clientnumber=$1 [L]
$1
指的是第一个捕获组。您的正则表达式中没有任何捕获组。这是正确的:
RewriteRule ^([0-9]+)$ index.php?action=viewclient&clientnumber=$1 [L]
答案 1 :(得分:-1)
将其更改为
RewriteRule ^([0-9])$ index.php?action=viewclient&clientnumber=$1 [L]
([0-9]之后没有+)
意味着只有在请求中存在数字0-9时才会执行该规则