.htaccess - 受影响文件夹的可变位置

时间:2013-07-17 13:39:05

标签: .htaccess

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

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

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

理想情况下,网址将跟随./assets/placeholder/300x200/EAEAEA/333333?text=Test,其中文本是常规的GET变量。

这是我刚才放在一起的.htaccess。如果文件位于根目录中,则它可以工作:

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

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

我已经找到了this article on the matter,但我对这个问题的知识不足以使其适合这种情况。

提前致谢!

更新:我决定将.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]

1 个答案:

答案 0 :(得分:0)

如果您希望运行QSA标记,请将此网址.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]

尝试使用此代码重定向带有结束斜杠的网址:

RewriteCond %{REQUEST_URI} !^([^/]*)/$
RewriteRule assets/placeholder/(.*)$ assets/placeholder/$1/ [L,R=301]