一个页面在两个地址上可用.htaccess

o4hqfura  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(113)

初始数据:

该网站有一些页面:

http://domen.com/index.php?act=rules

决定将浏览器地址栏中的链接视图更改为:

http://domen.com/rules

我定了个规矩:

RewriteRule ^([A-Za-z0-9]{3,10})$ index.php?act=$1 [L]

一切正常,没有问题。(在浏览器地址栏中,您输入的地址为 * http://domen.com/rules,脚本将接收到act=rules*参数,因为页面脚本使用了该参数)。

问题:

问题是同一个页面现在在这两个不同的地址上可用。
如何在输入时更改地址栏:

http://domen.com/index.php?act=rules to http://domen.com/rules

还保留了***act=rules***参数?(因为它在脚本中使用)。
可以使用什么规则?
或者是逻辑本身错了?
告诉我去哪找。谢谢!

oewdyzsn

oewdyzsn1#

根据我的理解,你只是想添加一个规则,将原始URL重定向到重写的URL?
这应该可以实现您的目的:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^act=([A-Za-z0-9]{3,10})$
RewriteRule ^/?index\.php$ /%1 [QSD,R=301,L]
RewriteRule ^/?([A-Za-z0-9]{3,10})$ /index.php?act=$1 [END]

最好从R=302temporary 重定向开始,然后在一切正常运行后才将其更改为R=301permanent 重定向,这样可以防止严重的缓存问题。
您可以在http服务器的主机配置(首选位置)中实现这些规则。或者,如果您没有访问权限,您可以使用 distributed 配置文件(“.htaccess”)。

相关问题