Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Regex 重定向到重写的URL问题_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Regex 重定向到重写的URL问题

Regex 重定向到重写的URL问题,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我在尝试重定向到重写的url时遇到问题。 我是改写自: www.testdomain.com/index.php?rt=…&id=… 致: www.testdomain.com/{rt}/{id} 并尝试从旧的(1)重定向到(2) 在这里,我的.htaccess文件: RewriteRule ^(.*)/([0-9]+)/?$ index.php?rt=$1&id=$2 [L] RewriteCond %{REQUEST_URI} ^/index.php RewriteCond %{Q

我在尝试重定向到重写的url时遇到问题。 我是改写自:

www.testdomain.com/index.php?rt=…&id=…

致:

www.testdomain.com/{rt}/{id}

并尝试从旧的(1)重定向到(2)

在这里,我的.htaccess文件:

RewriteRule ^(.*)/([0-9]+)/?$ index.php?rt=$1&id=$2 [L]

RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} ^rt=(.*)&id=(.*)$
RewriteRule ^(.*)$ http://www.localdomain.com/%1/%2? [R=301,L]

这就是我的问题:当我在浏览器中运行时,它会抛出一个关于重定向循环的错误。但我不知道如何修复此错误。

将您的代码替换为:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?rt=([^\s&]+)&id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([0-9]+)/?$ /index.php?rt=$1&id=$2 [L,QSA]

将代码替换为:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?rt=([^\s&]+)&id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([0-9]+)/?$ /index.php?rt=$1&id=$2 [L,QSA]