您链接到的问题实际上并没有做您想做的事情(尽管原理是相同的)他们所做的是将 url 转换为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
意味着您可以确定该网址实际上是您要重定向的网址,并且它不会破坏您网站上的其他图像/链接。
上述规则采用一个 url(如上面的示例)并将其转换为:
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