删除包含参数的url部分?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (48)

我有这个网址:

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]

但是URL的一部分仍然存在,如果我回到另一个页面,只要服务器崩溃,我就会被重定向到同一页面。

提问于
用户回答回答于

如果要重定向 /page.php?user=<username>/<username>,在<username>一系列az或AZ字符的位置,请在.htaccess文件顶部尝试以下内容:

Options -MultiViews

RewriteEngine On

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

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

%1是对最后匹配的CondPattern中捕获的组的反向引用。对REDIRECT_STATUS 环境变量的检查是为了确保我们只检查初始请求而不是重写请求。

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

然后,您可以使用内部重写请求的现有规则来执行此操作/page.php?user=<username>。虽然NC指令上的标志是不必要的。检查现有文件(可能还有目录?),除非你有没有扩展名的文件?而且您不需要在字符类中转义点。因此,它可以简化为:

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

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问6 回答

扫码关注云+社区

领取腾讯云代金券