Mod 重写 URL 编辑中的问题

Mod 重写 URL 编辑中的问题

可能重复:
通过 mod rewrite 将帖子标题设为 url 中的 slug

我有一个网址:

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

我想使用 mod rewrite 重写它

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

我正在使用以下 rewite_rule:

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

但它不起作用。如果我输入,http://www.example.com/100/99它会重定向到http://www.example.com/details.php?var=100&p=99url。请帮我解决这个问题。谢谢

答案1

你的方法的问题是

  1. ^([1-9]+)URI 以/- 开头,你告诉规则检查一些数字而不/
  2. 您的 URL 中可能会有零,因此 having1-9不会允许您使用零。

尝试这个:

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

您可以在此处验证您的重写规则 -http://martinmelin.se/rewrite-rule-tester/

答案2

如果是关于*重定向*,然后http://...从目标部分中删除前缀。

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

将此作为第一条规则。

还请记住,您必须调整应用程序以实际生成 /123/456 网址。重写规则仅适用于传入请求,它不会更改页面。

答案3

在正则表达式中包含 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]

相关内容