代码之家  ›  专栏  ›  技术社区  ›  th3g3ntl3man

删除url中包含参数的部分

  •  1
  • th3g3ntl3man  · 技术社区  · 7 年前

    我有这个网址:

    https://www.example.it/page.php?user=Pippo
    

    https://www.example.it/Pippo
    

    我尝试使用以下代码:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^page/(.*)/$ /page.php?user=$1 [L]
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   MrWhite    7 年前

    如果你想的话 /page.php?user=<username> /<username> ,在哪里 <username> 是一系列的a-z或a-z字符,然后在顶部尝试以下内容 .htaccess 文件:

    Options -MultiViews
    
    RewriteEngine On
    
    RewriteCond %{ENV:REDIRECT_STATUS} ^$    
    RewriteCond %{QUERY_STRING} ^user=([a-zA-Z]+)
    RewriteRule ^page\.php$ /%1? [R=302,L]
    

    只是澄清一下,这只是为了满足搜索引擎可能已经索引了旧的网址,或外部网站链接到它。应用程序中的URL已经直接链接到 .

    这个 %1 是对上一次匹配中捕获的组的反向引用 CondPattern公司 . 支票上写着 REDIRECT_STATUS 环境变量

    只有在测试了301正常工作后,才能更改为301。

    . 虽然 NC 你指令上的标志是不必要的。检查现有文件(可能还有目录?),除非你有没有扩展名的文件?你不需要在字符类中转义点。因此,可以简化为:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ /page.php?user=$1  [L]
    
    推荐文章