我真的不明白为什么我的.htaccess文件错误地使用^(.*)$
...
这是我的.htaccess:
RewriteEngine On
RewriteRule ^(.*)$ index.php?alias=$1 [L]
我只想将我的主机地址后的所有文本放在名为"别名"的GET参数中。
结果是,在我的PHP脚本" index.php"中,$_GET['alias']
将具有值" index.php"而是在我的主持人地址之后。
如果我改变我的.htaccess:
RewriteEngine On
RewriteRule ^([A-Za-z\/]+)$ index.php?alias=$1 [L]
我终于让$_GET['alias']
拥有正确的价值。
例如,如果我请求http://myaddress.com/the-value-of-alias,则在第一种情况下,我将获得$_GET['alias'] = 'index.php'
。在第二种情况下,我会get $_GET['alias'] = 'the-value-of-alias'
。
那么有人可以解释一下^([A-Za-z\/]+)$
和^(.*)$
之间有什么区别吗?
非常感谢你提前。 :)
答案 0 :(得分:0)
当你输入。*它匹配任何网址,所以你最终进行递归重定向,而当你有特定的正则表达式元素时,它将工作,因为它只匹配你的第一个网址。它与目标网址不匹配,因为它中包含“等于”的符号
答案 1 :(得分:0)
^(.*)$
表达式表示除点之外的任何内容。
至于表达式^([A-Za-z\/]+)$
,它将获得从A到Z以及从a到z的字符