我有这个链接
www.example.com/1/title
哪个去
www.example.com/post.php?author=1&title=title
因为这个规则
RewriteRule ^post/([0-9]+)/([\w-_:]+)/?$ post.php?author=$1&title=$2 [L,QSA,NC]
很好,但现在怎么做,如果有人输入 www.example.com/post.php?author=1&title=title 重定向到 www.example.com/1/title
我花了几个小时在线研究这个,但信息是模糊的(至少对我来说)并且不起作用。
到目前为止,有两件事让我感到困惑:
这不会造成循环吗?
任何从第一个链接中获取变量的可行代码
重定向。在我的脑海中,301 将是正确的选择,但我看到了
很多人(示例)通过 RewriteRule 来做这件事。
我知道以后可以使用 $1 和 $2 访问(组)......但是当我尝试相反时,我无法使其工作。例如:
RewriteRule ^post.php?author=([0-9]+)&title=([\w-_:]+)$ post/$1/$2
但就像我说的没有任何作用。我一直在像 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html 这样的网站上打我的头。但我无法完全理解(或应用)我在那里阅读的内容。你能告诉我我做错了什么或者我应该如何解决这个问题吗?
非常感谢您能给我的任何帮助
最佳答案
你需要一个这样的新规则:
RewriteCond %{THE_REQUEST} \s/+post\.php\?author=([^&]*)&title=([^\s&]+) [NC]
RewriteRule ^ post/%1/%2? [R=302,L]
RewriteRule ^post/([0-9]+)/([\w-_:]+)/?$ post.php?author=$1&title=$2 [L,QSA,NC]
关于用于动态 URL 的 Apache Mod_Rewrite Htaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21691224/