0

愚蠢的问题

怎么能放:

RewriteRule ^$ index.php?url=$1&%{QUERY_STRING} [QSA]

进入 :

RewriteRule ^$ index.php?url=*.(jpe?g|png|bmp)&%{QUERY_STRING} [QSA]

重写网址 http://site.com/folder/index.php?url=123.jpg&do=xxx

http://site.com/folder/123.jpg?do=xxx

第一条规则可以做到这一点,但我需要阻止 gif 文件

4

1 回答 1

3

因此,您希望允许浏览器向现有查询字符串提供类似folder/123.jpg(或 .gif、.png、.bmp)的图像 URL 并附加:index.php?url=123.jpg

RewriteEngine On
RewriteRule ^folder/([^.]+)\.(jpg|jpeg|png|bmp)$ folder/index.php?url=$1.$2 [L,QSA]

该模式([^.]+)捕获到 in 的所有内容.$1并且将扩展捕获到$2. [QSA]将附加现有的查询字符串do=xxx,而无需您手动附加它。

这可以在 Apache2 中使用非捕获组进行简化,(?:)因此整个事情都被$1.

RewriteRule ^folder/([^.]+\.(?:jpg|jpeg|png|bmp))$ folder/index.php?url=$1 [L,QSA]

或者您可以有条件地应用它:

# If the request ends in .jpg, .bmp, .png...
RewriteCond %{REQUEST_URI} \.(jpe?g|bmp|png)$
RewriteRule ^folder/(.*)$ folder/index.php?url=$1 [L,QSA]
于 2012-12-30T19:14:11.503 回答