在htaccess中获取字符串url参数

时间:2014-05-26 06:13:37

标签: php .htaccess

我正在使用以下htaccess文件作为我的文件夹。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ index.php?su_id=$1&t=$2

RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ index.php?su_id=$1&t=$2

</IfModule>

当我尝试访问时它无法正常工作

www.abc.com/k/?su_id=87&t=this-is-a-google-boy (Original URL)
www.abc.com/k/87/this-is-a-google-boy (try to access url)

它正在运作

www.abc.com/k/87/102 (try to access url and it is working)

2 个答案:

答案 0 :(得分:0)

第一个网址不符合您的规则

你要求'带有_和 - 的任何字母或数字后跟一个/然后是一个数字。

/k/?su_id=xxx在/之后没有数字,而是查询字符串。按照您希望的URL,您需要遵循以下规则:

RewriteRule ^([a-Z0-9+-]+)/([0-9]+)/([a-z0-9-]+)$ index.php?su_id=$1&t=2 [NC,QSA]

答案 1 :(得分:0)

你的规则不正确你将字符串传递给数字规则,所以它不会工作

www.abc.com/k/87/this-is-a-google-boy

不符合规则

RewriteRule ^([a-zA-Z0-9 _-] +)/([0-9] +)/ $ index.php?su_id = $ 1&amp; t = $ 2

尝试

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?su_id=$1&t=$2

接受/ stringornumber / number / stringornumber

([0-9]+) accept only number

([a-zA-Z0-9_-]+) accept both number & string