2

我有一个 PHP 脚本来生成占位符图像,很像Placehold.it服务。我想要一个定制的,以防止免费在线服务经常出现的延迟。

我已将此脚本包含在我个人前端样板文件中的./assets/placeholder/文件夹中。这就是为什么我需要一个 .htaccess 来适应占位符文件夹的当前位置,因为它并不总是根目录。

该脚本采用以下参数:d(尺寸,例如 400、250x100)、bg(背景颜色)、color(文本颜色)和text

理想情况下,url 将按以下方式工作./assets/placeholder/300x200/EAEAEA/333333?text=Test,文本是常规 GET var。

这是我不久前整理的 .htaccess。只要文件位于根目录中,它就可以工作:

RewriteEngine on
RewriteRule ^#([^/]*)/([^/]*)/([^/]*)$ index.php?d=$1&bg=$2&color=$3 [QSA]

一句话,如果我将此文件(index.php)从根目录移动到 /some/other/dir/index.php,我希望 .htaccess 文件仍然可以运行,而无需更改 RewriteBase 或任何东西。

我已经找到了这篇关于此事的文章,但我没有足够的知识来解决这个问题。

提前致谢!

更新:我决定将 .htaccess 文件移动到我的项目的根目录。唯一不起作用的是在末尾添加 / ,但在 ?

## Turn mod_rewrite engine on ##
RewriteEngine On

# No trailing / ?
RewriteCond %{REQUEST_URI} !(.*)/$
# Add the slash. 
RewriteRule assets/placeholder/(.*)$ assets/placeholder/$1/ [L,R=301]

# Map parameters to get vars
RewriteRule assets/placeholder/?([^/]*)/?([^/]*)/?([^/]*)/$ assets/placeholder/index.php?d=$1&bg=$2&color=$3 [QSA]
4

1 回答 1

0

如果您希望运行 QSA 标志,请将此 url 更改.assets/placeholder/300x200/EAEAEA/333333&text=Test为。.assets/placeholder/300x200/EAEAEA/333333?text=Test

并尝试以下代码:

RewriteEngine on
RewriteRule ^assets/placeholder/([^/]*)/([^/]*)/([^/]*)$ index.php?d=$1&bg=$2&color=$3 [QSA]

也尝试使用此代码重定向带有结尾斜杠的 url:

RewriteCond %{REQUEST_URI} !^([^/]*)/$
RewriteRule assets/placeholder/(.*)$ assets/placeholder/$1/ [L,R=301]
于 2013-07-17T14:07:12.630 回答