Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 HTaccess动态URL到静态重写,双向工作,无循环_.htaccess - Fatal编程技术网

.htaccess HTaccess动态URL到静态重写,双向工作,无循环

.htaccess HTaccess动态URL到静态重写,双向工作,无循环,.htaccess,.htaccess,我已经查看了堆栈溢出,但找不到我正在寻找的确切答案,所以现在开始 我有一个网址 哪个重定向到 然而,我需要它以另一种方式工作,当您输入动态URL时,它会重写为上面的静态文件夹URL,反之亦然。本质上,无论一个被称为什么,它都应该重写为静态的。现在我知道我需要设置一个与上面相反的重写,然后有一个条件来停止一个无限循环,但我似乎无法得到任何工作,请帮助。当有人键入http://holtplantandmachinery.co.uk/category.php?name=wheel-将加载程序加载到浏览

我已经查看了堆栈溢出,但找不到我正在寻找的确切答案,所以现在开始

我有一个网址 哪个重定向到

然而,我需要它以另一种方式工作,当您输入动态URL时,它会重写为上面的静态文件夹URL,反之亦然。本质上,无论一个被称为什么,它都应该重写为静态的。现在我知道我需要设置一个与上面相反的重写,然后有一个条件来停止一个无限循环,但我似乎无法得到任何工作,请帮助。

当有人键入http://holtplantandmachinery.co.uk/category.php?name=wheel-将加载程序加载到浏览器的URL地址栏,发送到holtplantandmachinery.co.uk服务器的请求如下所示:

GET /category.php?name=wheel-loaders HTTP/1.1
Host: holtplantandmachinery
some other headers
etc 
您可以使用%{the_REQUEST}变量与第一行匹配:

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ category\.php\?name=([^&\ ]+)
RewriteRule ^ /cat/%2? [L,R=301]
这将把请求重定向到http://holtplantandmachinery.co.uk/cat/wheel-loaders 该URL将显示在浏览器的URL地址栏中。使用%{The_REQUEST}而不是%{QUERY_STRING}的原因是,当您的另一个规则将外观更好的URL重写为具有查询字符串的URL时,该规则看起来会匹配%{QUERY_STRING},该规则将被应用并导致重定向循环。或者,您可以匹配查询字符串并使用:

RewriteCond %{ENV:REDIRECT_STATUS} !200
以确保URI不是来自以前重写的内部重定向

然后你会有你的内部重写规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?cat/(.*)$ /category.php?name=$1 [L]