Php 无法使用.htaccess从URL中删除查询字符串

Php 无法使用.htaccess从URL中删除查询字符串,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我的URL看起来像http://example.com/?n=x。我希望URL显示为http://example.com/。到目前为止,我已经习惯了这些方法,但没有一种有效 第一个是基于: 重新编写引擎打开 RewriteCond%{QUERY_STRING}^n=1$ 重写规则(.*)1美元?[R=永久性] 在回答以下问题后,我修改了.htaccess文件: ```RewriteEngine On RewriteCond %{QUERY_STRING} ^n=(.*)$ RewriteR

我的URL看起来像
http://example.com/?n=x
。我希望URL显示为
http://example.com/
。到目前为止,我已经习惯了这些方法,但没有一种有效

  • 第一个是基于:

    重新编写引擎打开
    RewriteCond%{QUERY_STRING}^n=1$
    重写规则(.*)1美元?[R=永久性]

  • 在回答以下问题后,我修改了.htaccess文件:

     ```RewriteEngine On
     RewriteCond %{QUERY_STRING} ^n=(.*)$
     RewriteRule (.*) $1? [R=permanent]```
    
    但它仍然不起作用。以下是调试信息:

    RewriteCond %{QUERY_STRING} ^n=(.*)$   
    This condition was met.
    
    
    RewriteRule (.*) $1? [R=permanent]   
    The new url is http://example.com/blog/cat/??
    Test are stopped, a redirect will be made with status code permanent
    
  • 第二种方法是:

    重新编写引擎打开
    重写cond%{QUERY_STRING}^$
    重写规则^(.*)$$1[QSD]

  • 它们似乎都不起作用

    我还有几个问题:

  • 重写是否仅在URL不是手动键入的情况下才起作用
  • 我仍然可以在PHP中访问查询字符串的值吗
  • 当用户复制重写的URL时会发生什么

  • 如果转到
    http://example.com/?n=1
    ,如果我没有错,您应该将
    ^n=1$
    更改为
    ^n=(.*)$

    以及其他问题:

  • 它适用于所有类型。不管是机器人还是人类写的,当你访问一个页面时,
    .htaccess
    将被读取
  • 是的,你可以。使用。如果使用前面介绍的htaccess重定向,您将丢失它们,因为您正在重定向
  • 你什么意思

  • 感谢您的回答@P0IT10n URL仍然没有被重写。请尝试在
    上的重写引擎
    RewriteCond%{QUERY\u STRING}^n=(.*)$
    RewriteBase/
    之间添加,如果仍然不起作用,请尝试查看您的
    .htaccess
    是否已被读取。用于尝试HTACCESS规则。我已更新问题以添加额外的调试信息。:)您使用了
    http://example.com/blog/cat/??
    该文件的正确输出应该是什么?