Php 如果页面的url发生更改,请重定向该页面

Php 如果页面的url发生更改,请重定向该页面,php,.htaccess,redirect,Php,.htaccess,Redirect,我有一个带有URL参数的daynamic页面: /artandculture/details.php?articleid=28208&parentid=1&catid=166 我希望,如果用户更改了URL,那么它会重定向到主URL,例如URL中的任何更改,然后重定向到: /artandculture/details.php?articleid=28208&parentid=1&catid=166 是否有使用.htaccess的解决方案?确认后,使用htacce

我有一个带有URL参数的daynamic页面:

/artandculture/details.php?articleid=28208&parentid=1&catid=166
我希望,如果用户更改了URL,那么它会重定向到主URL,例如URL中的任何更改,然后重定向到:

/artandculture/details.php?articleid=28208&parentid=1&catid=166

是否有使用
.htaccess
的解决方案?

确认后,使用htaccess尝试此解决方案

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/artandculture/details\.php
RewriteCond %{QUERY_STRING} !^articleid=[0-9]+&parentid=[0-9]+&catid=[0-9]+$
RewriteRule .* /artandculture/details.php?articleid=28208&parentid=1&catid=166 [L,NC,R=307]

RewriteCond
将检查所请求的uri是否为您的权限页,然后下一步将执行。下一步
RewriteCond
将检查GET参数是否不存在或格式是否错误,然后将URL更改为主页


从上一条规则中删除
,R=307
,将不会重定向(在浏览器中更改地址),这将只显示用户更改URL的主页

需要更多信息:你所说的改变是什么意思?你能给出你想要重定向的URL的例子吗据我所知,如果用户在
details.php
之后更改了参数名称或缺少语法,则需要重定向,因为可以更改这些GET值(主要是整数)来创建动态页面。以前的网址是什么?不容易为更改所知,因为您的网站中将有一些其他页面URL。假设用户(网站访问者)将URL更改为this:/artandculture/details.php,然后我希望它重定向到主URL:/artandculture/details.php?articleid=28208&parentid=1&catid=166如果用户刚刚在浏览器中输入
/artandculture/details.php
,它是否应该始终重定向到
/artandculture/details.php?articleid=28208&parentid=1&catid=166
?@anubhava,是和否,是,对于本文,它必须重定向到此URL,但否,因为有很多文章,每一篇都有自己的URL参数,它必须重定向到自己的URL。那么,当web服务器收到的URL只是
/artandculture/details.php
时,您认为web服务器如何知道重定向到哪里呢?是的,您理解我的问题是正确的,但代码不起作用,也不重定向,请注意,我只给出了一个例子,对于该url或类似url的任何更改,它都必须重定向。在我的htaccess文件顶部有:“RewriteEngine on”,以及为什么您将标记(#)放在代码之前,我的代码没有(#)。@Kaveh:很抱歉出现错误,感谢您通知(#)错误。实际上,第二个条件应该只检查
QUERY\u字符串
,这就是错误。我已经编辑了答案,请检查。您可以更改第二个条件以满足重定向要求。第一个条件只是确保它不应该重定向到其他页面,比如about-us.php,因为在这种情况下,第二个条件将始终为true,第三个条件将重定向。没问题,谢谢,但请注意,对于这篇文章,它必须重定向到这个URL,并且有很多文章,因此每一篇文章都必须重定向到自己的URL,所有代码都重定向到此URL。