【发布时间】: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