Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess Mod rewrite规则,该规则仅获取URL的=_.htaccess_Url_Redirect_Mod Rewrite - Fatal编程技术网

.htaccess Mod rewrite规则,该规则仅获取URL的=

.htaccess Mod rewrite规则,该规则仅获取URL的=,.htaccess,url,redirect,mod-rewrite,.htaccess,Url,Redirect,Mod Rewrite,我当前正在尝试重定向此URL http://dev.example.org/active/researchers/contact.php?IDENT=12345 到 在htaccess中 但是,我只能重定向到 http://portaldev.example.org/users/ident/IDENT=12345 因为我找不到摆脱IDENT=的方法。我该怎么做 my htaccess中的重写条件为: RewriteCond %{REQUEST_URI} ^/active/researche

我当前正在尝试重定向此URL

http://dev.example.org/active/researchers/contact.php?IDENT=12345

在htaccess中

但是,我只能重定向到

http://portaldev.example.org/users/ident/IDENT=12345
因为我找不到摆脱
IDENT=
的方法。我该怎么做

my htaccess中的重写条件为:

RewriteCond %{REQUEST_URI}  ^/active/researchers/contact\.php$ 
RewriteCond %{QUERY_STRING} ^IDENT=([0-9]*)$
RewriteRule ^(.*)$ http://portaldev.example.org/users/ident/$2 [R=302,NC,L]

这可能就是您正在寻找的:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)IDENT=(\d+)(?:&|$)
RewriteRule ^/?active/researchers/contact\.php$  http://portaldev.example.org/users/ident/%1 [R=302,QSD,NC]
一开始使用302临时重定向是一个好主意,在确定所有设置都正确后,只需将其更改为301永久重定向。这样可以防止在尝试时出现缓存问题

此实现将在http服务器主机配置或分布式配置文件(“.htaccess”文件)中同样工作。显然,重写模块需要在http服务器中加载,并在http主机中启用。在使用分布式配置文件的情况下,您需要注意在主机配置中启用该文件的解释,并且该文件位于主机的
DOCUMENT\u ROOT
文件夹中


还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。这些分布式配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实降低了http服务器的速度。只有在您无法访问真正的http服务器主机配置(读:真正廉价的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)的情况下,才提供它们作为最后一个选项

这可能就是您想要的:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)IDENT=(\d+)(?:&|$)
RewriteRule ^/?active/researchers/contact\.php$  http://portaldev.example.org/users/ident/%1 [R=302,QSD,NC]
一开始使用302临时重定向是一个好主意,在确定所有设置都正确后,只需将其更改为301永久重定向。这样可以防止在尝试时出现缓存问题

此实现将在http服务器主机配置或分布式配置文件(“.htaccess”文件)中同样工作。显然,重写模块需要在http服务器中加载,并在http主机中启用。在使用分布式配置文件的情况下,您需要注意在主机配置中启用该文件的解释,并且该文件位于主机的
DOCUMENT\u ROOT
文件夹中


还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。这些分布式配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实降低了http服务器的速度。只有在您无法访问真正的http服务器主机配置(读:真正廉价的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)的情况下,才提供它们作为最后一个选项

为其他需要帮助的人找到了我问题的答案:

RewriteCond %{REQUEST_URI}  ^/active/researchers/contact\.php$ 
RewriteCond %{QUERY_STRING} ^IDENT=(.*)
RewriteRule (.*)  http://portaldev.cepr.org/users/ident/%1? [R=301,L]

我想最主要的是什么?在重写规则结束时,但如果我在第一个重写秒中输入请求uri并在重写规则中使用(.*),它也不会起作用

为需要帮助的其他人获得我问题的答案:

RewriteCond %{REQUEST_URI}  ^/active/researchers/contact\.php$ 
RewriteCond %{QUERY_STRING} ^IDENT=(.*)
RewriteRule (.*)  http://portaldev.cepr.org/users/ident/%1? [R=301,L]

我想最主要的是什么?在重写规则的末尾,但它也不起作用,除非我在第一个RewriteCond中输入请求uri并在重写规则中使用(.*)

谢谢您的建议,但您的代码对我不起作用,因为它根本不会重定向。我正在使用一个站点测试调用的代码,它说条件不满足,但不管怎样,我在我的站点上尝试了它,但没有重定向。我无法理解你的观点。如果我测试了上述规则集,那么在使用您建议的测试站点时,它会根据需要为我工作。我刚才添加的唯一内容是:在重写过程中删除原始参数的
QSD
标志。但条件确实匹配,并执行重定向。也许你在复制上述规则集时出错了?Yh抱歉,我的坏代码似乎有效,不确定出了什么问题,但我还是找到了答案,谢谢你的帮助谢谢你的建议,但你的代码对我不起作用,因为它根本没有重定向。我正在使用一个站点测试调用的代码,它说条件不满足,但不管怎样,我在我的站点上尝试了它,但没有重定向。我无法理解你的观点。如果我测试了上述规则集,那么在使用您建议的测试站点时,它会根据需要为我工作。我刚才添加的唯一内容是:在重写过程中删除原始参数的
QSD
标志。但条件确实匹配,并执行重定向。也许你在复制上述规则集时犯了错误?Yh抱歉,我的错误似乎有效,不确定出了什么问题,但我还是找到了我的答案,谢谢你的帮助