Htaccess跳过空行问题

时间:2014-03-13 10:26:03

标签: php .htaccess mod-rewrite

我对.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脚本。

好的,我上床睡觉了 - 周末会重试。

2 个答案:

答案 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时才会执行该规则