.htaccess 使用Apache实现动态路径文件服务器

e5njpo68  于 2023-08-06  发布在  Apache
关注(0)|答案(3)|浏览(156)

在Apache htaccess中,有没有一种方法可以使用参数作为子文件夹,而不重定向到真实的的URL?
例如:
https://example.com/folder1/folder2/a.jpg?version=small

https://example.com/folder1/folder2/small/a.jpg
我已经尝试了各种方法,但都不起作用。例如:

RewriteCond %{QUERY_STRING} ^version=([^&]+)
RewriteRule ^([^/]+)/([^/]+)\.jpg$ $1/%1/$2 [L]

字符串
备注:
我还试图使版本文件夹不可用在直接请求
第一个月

woobm2wo

woobm2wo1#

是的,您可以在.htaccess文件中使用动态文件扩展名来实现所需的URL重写。为此,您需要修改RewriteRule中的正则表达式,以捕获动态扩展并在重写的URL中使用它。
以下是实现此目标的方法:

RewriteEngine On 
RewriteBase /

# Extract the version parameter from the query string 
RewriteCond %{QUERY_STRING} version=([^&]+)

# Extract the file extension from the original request 
RewriteRule ^([^/]+)/([^/]+)\.(.+)$ $1/%1/$2.%3 L

字符串
RewriteRule中的(.+)捕获动态文件扩展名,替换中的%3表示重写URL中捕获的扩展名。

oknrviil

oknrviil2#

您可能需要相应地调整RewriteRule中的正则表达式。此外,请确保在进行任何更改之前备份您的.htaccess文件,以避免您的网站出现潜在问题。

RewriteEngine On
RewriteBase /
# Extract the version parameter from the query string
RewriteCond %{QUERY_STRING} ^version=([^&]+)

# Rewrite the URL with the version parameter as a subfolder
RewriteRule ^([^/]+)/([^/]+)\.jpg$ $1/%1/$2.jpg L

字符串
RewriteRule中的%1引用RewriteCond指令中捕获的值,该值是查询字符串中的版本参数。

ijxebb2r

ijxebb2r3#

这将为您指明正确的方向:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^version=(\w+)$
RewriteRule ^/?folder1/folder2/(.+)$ /folder1/folder2/%1/$1 [L,QSD]

字符串
RewriteCond提取指定为“version”参数的 wordRewriteRule * 在内部 * 使用提取的版本字和文件名重写请求。
很可能您将不得不调整实现中的细节以匹配您的具体情况。

相关问题