协助 .htaccess 文件夹重写

Posted

技术标签:

【中文标题】协助 .htaccess 文件夹重写【英文标题】:Assistance with .htaccess folder rewrite 【发布时间】:2012-12-17 07:09:33 【问题描述】:

我想对我网站上的图片上传器进行 .htaccess 重写,但是对于我尝试过的所有教程,我都无法正常工作。

目前,我的代码将图像上传到文件夹: http://www.example.com/server/php/files/jkgh4f54.jpg

我想重写它,所以当你访问这个 URL 时:http://www.example.com/jkgh4f54.jpg 它显示的是来自上述位置的图像。

有什么想法吗?正如我所提到的,到处都有很多关于类似内容的教程,但到目前为止,我还无法让它们适应我的工作。

当前.htaccess:

RewriteEngine On
RewriteCond %(REQUEST_FILENAME !-f [OR]
RewriteCond %(REQUEST_FILENAME !-d
RewriteRule ^[a-zA-Z0-9]+\.(jpe?g|png|gif|bmp)$ /server/php/files/$0 [L]
RewriteRule ^([a-zA-Z0-9]+)$ index.php?code=$1 //For URL Shortener
ErrorDocument 404 http://localhost/site.com/404.php

【问题讨论】:

听起来你想重定向,而不是重写。有很多关于如何做到这一点的问题。 【参考方案1】:

试试:

RewriteEngine on
RewriteRule ^(.*)\.jpg$ http://site.com/server/php/files/$1\.jpg [R=301,L]

【讨论】:

不幸的是,这在现场环境中也不起作用。 哦!我觉得我们更亲近了!您的编辑产生了一个重定向循环:site.com/server/php/files/server/php/files/server/php/files/… 该死!错误 310 (net::ERR_TOO_MANY_REDIRECTS):重定向太多。一样。 有现场版我可以看看吗? 我会在一两天内,抱歉耽搁了我实际上正在从头开始重建我的网络服务器。【参考方案2】:

使用此代码,当用户访问http://example.com/h3h2js.jpg 时,他们将看到来自http://example.com/server/php/files/h3h2js.jpg 的图像,但浏览器中的URL 将保持不变:

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f [OR]
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^[a-zA-Z0-9]+\.(jpe?g|png|gif|bmp)$ /server/php/files/$0 [L]

我已经在 Windows 上全新安装 XAMPP 时彻底测试了此代码。图片名称必须仅包含任意大小写的字母数字字符(a-z、A-Z、0-9),并且必须以 jpg、jpeg、png、gif 或 bmp 文件扩展名结尾。如果请求的图像文件已经存在于站点根目录中,则不会进行重写

【讨论】:

这在本地副本 (XAMPP) 上不起作用的任何原因?不幸的是,今晚我无法在实际域上对此进行测试,但 RewriteRule ^(.*).(jpg|png|gif)$ localhost/site.com/server/php/files/$1.$2 正在产生错误 500。(http:// 就在那里也是,但目前无法在评论中显示)。 进入了现场环境,不幸的是没有工作。 example.com/jkgh4f54.jpg 只是传递给我的 404 ErrorDocument 处理程序。 我去看看(我还没有实际测试过)。顺便说一句,如果你把它放在 backtics ` 之间,你可以按原样在 cmets 中发布代码 我辛苦了,终于想出了一个解决方案。请参阅我的更新答案,了解您可以使用的一些精简、高效的代码 首先,这段代码是为在站点根目录中使用而设计的(例如http://localhosthttp://dragit.in。我没有在子目录中测试过。你说得对,它是@ 987654328@(我不得不手动复制代码);我已经更新了我的答案

以上是关于协助 .htaccess 文件夹重写的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 重写链接在 .htaccess 文件中不起作用

htaccess 用最终的子文件夹重写 url

.htaccess 没有文件夹的根重写

htaccess - 重写具有同名目录的文件

从htaccess重写中排除文件夹

重写 .htaccess 中子目录的 url