在Mod重写URL编辑中的重复

可能重复:
通过国防部重写,使邮政标题作为url中的slu </s>

我有一个url:

http://www.example.com/details.php?var=100&p=99 

我想重写它使用国防部重写

 http://www.example.com/100/99 

我正在使用以下rewite_rule:

 RewriteRule ^([0-9]+)/([0-9]+) $ http://www.example.com/details.php?var=$1&p=$2 [L] 

但它不工作。 如果我inputhttp://www.example.com/100/99则会redirect到http://www.example.com/details.php?var=100&p=99url。 请帮我解决这个问题。 谢谢

你的方法中的问题是

  1. ^([1-9]+) URI以/开头 – 告诉规则检查一些没有/
  2. 在你的URL中可能有零,所以1-9不会让你有零。

尝试这个:

 RewriteRule ^/([0-9]*)/([0-9]*) http://www.example.com/details.php?var=$1&p=$2 [L] 

你可以在这里validation你的重写规则 – http://martinmelin.se/rewrite-rule-tester/

如果是关于*redirect* ,则从目标部分删除http://...前缀。

 RewriteRule ^(\d+)/(\d+)$ details.php?var=$1&p=$2 [L] 

做这个第一条规则。

另外请记住,你必须调整你的应用程序,以实际生成/ 123/456url。 重写小程序只适用于传入的请求,它不会改变页面。

在正则expression式中包含0:

 RewriteRule ^/([0-9]+)/([0-9]+)/?$ http://www.example.com/details.php?var=$1&p=$2 [L] 

相反的是:

 RewriteCond %{QUERY_STRING} ^var=([0-9]+)\&p=([0-9]+)$ RewriteRule ^details\.php$ http://www.example.com/%1/%2 [R=301,L]