【问题标题】:rewrite query string with .htaccess without altering link structure用 .htaccess 重写查询字符串而不改变链接结构
【发布时间】:2021-04-28 04:19:23
【问题描述】:

我想从 URL 中删除查询字符串,并在没有查询字符串的情况下重写它,而无需重新编码链接结构。

我已经添加了这个:

RewriteCond %{QUERY_STRING} .
RewriteRule ^$ /? [R,L]

到我现有的 .htaccss 代码的末尾(所以这是完成的最后一件事,因为在此之前还有其他重写规则)但查询字符串没有被删除。我做错了什么?

这是我当前的 .htaccess 文件的内容:

RewriteEngine On

RewriteRule ^userfiles/ - [L]
RewriteRule ^userdata/ - [L]

RewriteCond %{THE_REQUEST} /index\.php\?p=(?!admin)(?!superadmin)((?![^&]*?edit)[^\s&]+) [NC]
RewriteCond %{THE_REQUEST} /index\.php\?p=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L,QSA]

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

我还有一个一般性的问题,即它如何影响查询字符串作为变量的可用性...换句话说,如果我重写 URL 以不显示查询字符串,那么如果在 PHP I 中,该查询字符串仍然可用吗?写 $_GET['q'] 还是不再设置它? 谢谢

【问题讨论】:

  • 感谢您在问题中表现出您的努力。您能否在您的问题中显示您完整的 htaccess 文件,我们可能不需要编写额外的规则,我们可以在您现有的规则本身中删除查询字符串,所以请发布它,我们会更好地了解您的问题,谢谢你。
  • 当然@RavinderSingh13 - 我将其添加到我的问题中,因为我无法在这些 cmets 中添加代码

标签: .htaccess mod-rewrite url-rewriting query-string friendly-url


【解决方案1】:

对于您显示的示例,您能否尝试关注一次。请确保在测试您的 URL 之前清除您的浏览器缓存。在重定向删除查询字符串时,因为您的其他规则实际上并未重定向,如果这是您想要的,那么此更改可能会对您有所帮助。

RewriteEngine On
RewriteRule ^userfiles/ - [L]

RewriteRule ^userdata/ - [L]

RewriteCond %{THE_REQUEST} /index\.php\?p=(?!admin)(?!superadmin)((?![^&]*?edit)[^\s&]+) [NC]
RewriteCond %{THE_REQUEST} /index\.php\?p=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

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

【讨论】:

  • 这工作@RavinderSingh13 - 谢谢!你能告诉我删除 QSA 有什么作用吗?
  • @marcnyc,欢迎您(QSA 负责告诉 url 我正在添加查询字符串,同时在您尝试的规则中进行重定向)并在这个伟大的论坛上快乐学习和分享,祝您愉快天:)
  • 你能回答我帖子的最后一个问题吗?
  • @marcnyc,对不起,我不是 php 专家,但我知道你可以使 url 用户友好(在浏览器上没有实际 url)并且从后端你可以重写查询字符串,并且可能以某种方式将它传递给 php 我很确定,但我很抱歉我不知道它,但我很确定如果重写可用,那么它也可以通过 php 获得,干杯。
  • @marcnyc,我刚刚进行了快速搜索并获得了此链接stackoverflow.com/a/34406119/5866580 如果这对您有帮助,请检查一次?对我来说,你在这里问的问题看起来像是一个完美的例子。
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2013-02-19
相关资源
最近更新 更多