Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 URL变量重写_.htaccess_Mod Rewrite - Fatal编程技术网

重写.htaccess URL变量重写

重写.htaccess URL变量重写,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我目前使用: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)$ $1.php [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Rewr

我目前使用:

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}.php -f 
   RewriteRule ^(.+)$ $1.php [L,QSA]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}.html -f 
   RewriteRule ^(.+)$ $1.html [L,QSA]
用于删除.php和.html

但我想知道如何重写?[variableName]=[variable]

例如,目前这种情况发生了:

http://myurl.com/about.html 到http://myurl.com/about/

但我如何重写变量,例如:

http://myurl.com/foo/?bar=true 到http://myurl.com/foo/bar/true/

或者这是不可能的

谢谢你的帮助,欢迎对我当前的重写进行任何优化

编辑:大家好,在zx的帮助下,我得到了以下信息:

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}.php -f 
   RewriteRule ^(.+)$ $1.php [L,QSA]

   RewriteCond %{QUERY_STRING} ([^=]+)=([^=]+)
   RewriteRule ^/?$ %1/%2?  [L,R]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}.html -f
   RewriteRule ^(.+)$ $1.html [L,QSA]
我的链接是:href=。/?do=foo,返回的是/?do=foo not/do/foo/


这是一个100%的.htaccess代码的粘贴库,其中包括主机提供程序默认的内容:

我不知道我们要走哪条路,所以这里有两个选项

选择1

用户输入的链接:something?do=foo

重写链接:do/foo

选择2

用户输入的链接:foo/bar/true

重写链接:foo/bar=true

^锚点断言我们位于字符串的开头 每个[^/]+匹配一个路径片段并将其捕获到其中一个组 /? 匹配可选的最终斜杠 $anchor断言我们在字符串的末尾 $1?$2=$3使用组捕获重写url QSA附加任何预先存在的参数 DPI丢弃任何路径片段 我告诉mod rewrite在这之后停止检查规则
@Sumurai8的可能重复-尽管你已经将这个问题标记为重复,但他们似乎理解regex。他们写答案和解释答案的方式对我毫无帮助。这就是为什么我创造了这个。。。希望得到一个基本的、体面的答案。如果你问一个与正则表达式相关的问题,你应该对正则表达式有一个基本的了解。如果你不知道,那就去了解一下正则表达式。mod_rewrite中使用的正则表达式类似于PCRE和PHP使用的内容。@Sumurai8你说得对!我一直逐字逐句地读问题谢谢你指出这一点,我会再看一眼。很明显,我有相反的。。。已更新规则,请重试:不,正好相反。。。我把它调换了,因为@Sumurai8告诉我它是反向的!href=./?do=foo给出404:这是一个痛苦,啊哈,好吧,看看选项1。
RewriteCond %{QUERY_STRING} ([^=]+)=([^=]+)
RewriteRule ^/?$ %1/%2?  [L,R]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1?$2=$3 [QSA,DPI,L,R]