【问题标题】:.htaccess RewriteRule for search query page.htaccess RewriteRule 用于搜索查询页面
【发布时间】:2021-01-27 18:11:10
【问题描述】:

我想为我的搜索页面写一个重写规则,它必须满足以下条件:

显示网址​​:

/search?q=SEARCH-QUERY

实际网址:

/search.php?q=SEARCH-QUERY

我尝试了以下方法,但没有成功:

RewriteRule ^search?q=(.*)$ search.php?q=%1 [QSA]

我检查了许多相关问题,但找不到答案。

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    根据您显示的示例,您能否尝试以下操作。请在测试您的 URL 之前清除您的浏览器缓存。您正在检查 rewriterule 中的查询字符串,这将不起作用,因为查询字符串可以在条件中与变量 QUERY_STRING 或在变量 THE_REQUEST 中匹配,所以我在这里使用稍后的选项。

    RewriteEngine ON
    RewriteCond %{THE_REQUEST} \s/(search)\?q=SEARCH-QUERY\s [NC]
    RewriteRule ^ %1.php [L,QSA]
    

    【讨论】:

    • @Envayo,哦,好吧,在这种情况下,请使用RewriteCond %{THE_REQUEST} \s/(search)\?q=[^\s]*\s [NC] 一次并告诉我,一旦您确认,我将编辑我的答案,干杯。而.* 是贪婪的正则表达式,它将匹配我们需要匹配的所有内容,就像这里显示的那样。
    • 抱歉,我正要发布经过编辑的评论,但您似乎发布得更快。是的,这行得通。在接受您的答案之前,请让我再测试一下。非常感谢! :)
    • 带有分页的搜索结果页面呢?我应该如何修改重写规则以将/search?q=SEARCH-QUERY 重定向到/search.php?q=SEARCH-QUERY/search?q=SEARCH-QUERY&page=N/search.php?q=SEARCH-QUERY&page=N? N 是一个整数。
    • @Envayo,您好,您好!!想请求您打开一个新问题(以避免对未来用户造成任何混淆),我们可以在那里讨论它,请在打开它后告诉我新问题的链接,干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2012-11-26
    • 2018-09-15
    • 2016-01-10
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多