【问题标题】:Apache Mod_Rewrite Htaccess for Dynamic URL用于动态 URL 的 Apache Mod_Rewrite Htaccess
【发布时间】:2014-03-08 14:40:50
【问题描述】:

我有这个链接

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,该怎么做呢

我已经花了几个小时在网上研究这个,但信息很模糊(至少对我来说)并且不起作用。

到目前为止,有两件事让我感到难过:

  • 将漂亮的 url 写入动态,然后动态写入漂亮 - 这不会造成循环吗?
  • 我也想走 301 重定向的路线,但我找不到 从第一个链接中获取变量的任何可行代码放入 重定向。在我看来,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 这样的网站上打我的头,但我无法完全理解(或应用)我在那里阅读的内容。你能告诉我我做错了什么或者我应该如何解决这个问题吗?

非常感谢您能给我的任何帮助

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect http-status-code-301


    【解决方案1】:

    你需要这样的新规则:

    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]
    

    【讨论】:

    • 谢谢 - 这几乎可以工作。我会看看我是否能让它完全发挥作用。到目前为止,它让我跳到example.com/home/rezz/public_html/post/16/…
    • 做了一条艰难的道路并且它成功了 - RewriteRule ^ example.com/post/%1/%2? [R=302,L] - 非常感谢。
    • 或者你可以在目标中添加一个斜线作为RewriteRule ^ /post/%1/%2? [R=302,L]
    猜你喜欢
    • 2015-08-19
    • 2010-09-20
    • 2013-10-02
    • 2013-07-25
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多