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 重写规则将/文件夹/子文件夹/文件重写为/?f=文件夹/子文件夹/文件?_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

.htaccess 重写规则将/文件夹/子文件夹/文件重写为/?f=文件夹/子文件夹/文件?

.htaccess 重写规则将/文件夹/子文件夹/文件重写为/?f=文件夹/子文件夹/文件?,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,非常简单-只是想知道如何重写: /文件夹/子文件夹/文件 /?f=文件夹/子文件夹/文件 文件夹/子文件夹的数量可能会有所不同,因此我真正想要的是该路径中/之后的任何内容(该路径中尚未包含?f=的内容)重定向到前面添加?f=的路径 如果我加上这个 RewriteRule^(.*)?f=$1[L] 它工作得很好,但不知道URL中已经存在?f=,并在其中使用?f=中断现有链接 有什么想法吗?您可以使用: RewriteCond %{QUERY_STRING} !(?:^|&)f= [NC]

非常简单-只是想知道如何重写:

/文件夹/子文件夹/文件

/?f=文件夹/子文件夹/文件

文件夹/子文件夹的数量可能会有所不同,因此我真正想要的是该路径中/之后的任何内容(该路径中尚未包含?f=的内容)重定向到前面添加?f=的路径

如果我加上这个

RewriteRule^(.*)?f=$1[L]

它工作得很好,但不知道URL中已经存在?f=,并在其中使用?f=中断现有链接

有什么想法吗?

您可以使用:

RewriteCond %{QUERY_STRING} !(?:^|&)f= [NC]
RewriteRule ^(.*)$ ?f=$1 [L,QSA] 
如果
f
查询字符串已经存在,则不会执行重写操作。
使用[QSA]可以保留其他可能的查询字符串值。

可以使用:

RewriteCond %{QUERY_STRING} !(?:^|&)f= [NC]
RewriteRule ^(.*)$ ?f=$1 [L,QSA] 
如果
f
查询字符串已经存在,则不会执行重写操作。
使用[QSA]可以保留其他可能的查询字符串值。

尝试以下操作:

RewriteEngine On
RewriteRule ^(.[^\?]*)$ /?f=$1 [L] 
试试这个:

RewriteEngine On
RewriteRule ^(.[^\?]*)$ /?f=$1 [L]