我以 / storage / 这种方式存储上传的文件
public-adam-luki-uploads-123783.jpg
park-hanna-adel-propic-uploads-787689.jpg
' - 'count unknown 因为它会对图片描述进行切片
我希望我的用户能够以
的形式访问它 http://site.com/public/adam/luki/uploads/123783.jpg
http://site.com/park/hanna/adel/propic/uploads/787689.jpg
我认为这是同样的问题
mod_rewrite with an unknown number of variables
但我无法做到,因为我是mod_rewrite模块的新手
我希望你能用正确的重写来帮助我们
答案 0 :(得分:0)
您链接到的问题实际上并不是您要做的事情(尽管原理相同)他们所做的是将网址转换为GET
变量。
如果您只想将/
转换为-
,那么您可以使用将在循环中运行的简单重写规则:
ReWriteRule ^(.*)/(.*)$ $1-$2 [L]
当然有一些警告......
首先,即使您尝试访问真实的目录/文件,规则仍然会切换出/
和-
并留下404.您可以通过添加条件来解决这个问题;阻止它重写真实文件:
RewriteCond %{REQUEST_FILENAME} !-f
然而,您最好将匹配限制为仅图像(jpg
s):
RewriteCond %{REQUEST_FILENAME} !-f
ReWriteRule ^(.*)/(.*)\.jpg$ $1-$2.jpg [L]
ReWriteCond %{REQUEST_FILENAME} !-f
ReWriteRule ^images/(.*)/(.*)uploads[-/](\d+)\.jpg$ images/$1-$2uploads-$3.jpg [L]
RewriteCond %{REQUEST_FILENAME} !-f
ReWriteRule ^images/(.*)$ storage/$1 [L]
此解决方案要求您使用以下网址:
http://site.com/images/park/hanna/adel/propic/uploads/787689.jpg
伪目录images
表示您可以确定该网址实际上是您要重定向的网址,并且不会破坏您网站上的其他图片/链接。
以上规则采用网址(如上例所示)并将其转换为:
images/park/hanna/adel/propic/uploads/787689.jpg <--- Original
images/park-hanna/adel/propic/uploads-787689.jpg
images/park-hanna-adel/propic/uploads-787689.jpg
images/park-hanna-adel-propic/uploads-787689.jpg
images/park-hanna-adel-propic-uploads-787689.jpg
storage/park-hanna-adel-propic-uploads-787689.jpg <--- Final