.htaccess htaccess mod_使用动态参数重写

.htaccess htaccess mod_使用动态参数重写,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我是新的修改。我正在尝试将URL转发到另一个URL,但无法使其正常工作 假设我要转发此URL: /php?m=2&id=2-0-0&sid=cansas-to /cansas对您来说很好,它让报头以301响应,或者通过[R]更新URL 我在.htaccess中有以下内容: 选项+FollowSymlinks 重新启动发动机 重写规则^cansas.php?m=2&id=2-0-0-0&sid=cansas$cansas对您有好处[NC,R=301] 我想我可以做一个简单的转发,但在某个地方它停止

我是新的修改。我正在尝试将URL转发到另一个URL,但无法使其正常工作

假设我要转发此URL: /php?m=2&id=2-0-0&sid=cansas-to /cansas对您来说很好,它让报头以301响应,或者通过[R]更新URL

我在.htaccess中有以下内容:

选项+FollowSymlinks

重新启动发动机

重写规则^cansas.php?m=2&id=2-0-0-0&sid=cansas$cansas对您有好处[NC,R=301]

我想我可以做一个简单的转发,但在某个地方它停止工作。如果我删掉?m=2&id=etc,它只将cansas部分转发给新的部分,因此看起来是这样的:cansas对您有好处?m=2&id=2-0-0-0&sid=cansas

当URL字符串中有多个动态参数时,如何转发它?我需要转发的页面上的示例:

/php?m=2&id=2-0-0&sid=cansas

/php?m=2&id=2-1-0-0&sid=cansas

/php?m=2&id=2-2-0-0&sid=cansas

任何帮助都将不胜感激:)


也许这样做是不可能的?目前我设置它的方式是,我想使用名为/cansas的新URL,它从源代码/cansas.php?m=2&id=2-0-0-0&sid=cansas读取,但浏览器中显示的URL应该是:/cansas对您有好处。我需要转发旧的cansas.php?新URL的URL:)

您需要使用
RewriteCond
指令检查URL查询,因为
RewriteRule
指令只处理URL路径:

RewriteCond %{QUERY_STRING} ^m=2&id=2-0-0-0&sid=cansas$
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301]
如果只想检查一个参数,请使用以下命令:

RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301]
要仅针对初始请求执行此操作,您需要检查:

RewriteCond %{THE_REQUEST} ^GET\ /cansas\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301]