重写URL以删除查询字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重写URL以删除查询字符串相关的知识,希望对你有一定的参考价值。

我有一个需要重新格式化的URL。 example.com/?article_category=lifestyle我希望将其格式化为:example.com/lifestyle。但是,当我尝试使用我的.htaccess文件重新格式化它时,它不起作用。我的.htaccess文件与我的文件位于同一目录中。文件名是index.php

这是我提出的重写规则:

RewriteRule ^([w-]+)/?$ index.php?article_category=$1 [QSA,L]

我不知道为什么这不起作用。我究竟做错了什么?

答案

有用的文档:RewriteCond DirectiveRewriteRule Directive

RewriteCond %{QUERY_STRING} article_category=([a-z]+)
RewriteRule ^/?$ /%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]+) index.php?article_category=$1 [QSA,L]

第1行:检查包含article_category=([a-z]+)article_category=lifestyle的查询字符串是否匹配

第2行:如果URL是example.comexample.com/,永久重定向到/lifestyle%1是RewriteCond反向引用,分组部分(在括号中([a-z]+))的模式

第3/4行:如果URL不是常规文件和目录

第5行:如果URL以字母开头,请将URL重写为index.php?article_category=$1

以上是关于重写URL以删除查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess URL 重写挑战

apache_conf 重写URL以删除文件扩展名

如何以正确的方式从 laravel 5 url 重写或删除 public?

使用多个查询字符串重写 IIS URL

使用可选查询字符串参数重写 URL 的正则表达式

php 过滤以在提交或重定向时从URL中删除联系表单7查询字符串。进入函数文件。