首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除url中包含参数的部分

删除url中包含参数的部分
EN

Stack Overflow用户
提问于 2018-08-31 05:18:40
回答 1查看 32关注 0票数 1

我有这个URL:

代码语言:javascript
复制
https://www.example.it/page.php?user=Pippo

我应该得到的结果是:

代码语言:javascript
复制
https://www.example.it/Pippo

我尝试使用以下代码:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/(.*)/$ /page.php?user=$1 [L]

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 06:42:32

如果要将/page.php?user=<username>重定向到/<username>,其中<username>是一系列a-z或A-Z字符,请在.htaccess文件的顶部尝试类似以下内容:

代码语言:javascript
复制
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标志是不必要的。就像对现有文件(可能还有目录?)的检查一样,除非您有没有扩展名的文件?并且您不需要转义字符类中的点。因此,它可以简化为:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ /page.php?user=$1  [L]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档