使用mod_rewrite将pathinfo转换为查询字符串参数

时间:2011-02-21 12:32:17

标签: .htaccess mod-rewrite

似乎我终于不能再避免使用apache重写规则了。所以只是想了解它们。

我试图创建seo友好的网址。

这是我到目前为止所拥有的。虽然我认为rewriteCond是错误的:

RewriteCond %{REQUEST_URI} results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ 
RewriteRule ^results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ results.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5 [L]

当我去网址时: http://www.something.co.uk/results/foo/01-01-2011/1234/01-01-2011/1234它实际上可以正常工作并正确发布所有GET值。然而,我的问题是,当我从其他页面向results.php提交值时,他们总是用/ = foo / foo /...etc中的?= foo& 01-01-2011..etc显示旧的学校方式

现在从我所读到的内容中,rewriteCond旨在解决这个问题。但是我不确定我做错了什么以及为什么它没有重定向到新版本。

任何帮助,指导,示例都将不胜感激

由于

如果您在上面看到任何不良做法或任何严重缺陷的内容,请同时发表评论。正如我所说,我还在学习:)。

1 个答案:

答案 0 :(得分:0)

您不需要重写条件 - 这就是规则的第一部分,匹配模式。

RewriteRule ^results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ results.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5 [L]

听起来您还期望重写规则或条件更新系统输出的URL。他们所做的就是截取与其参数匹配的请求并在内部重定向它们。因此,如果你访问results.php,网址将不会被更改,你会看到,如你所说,旧学校的网址。