协助 .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://localhost
或http://dragit.in
。我没有在子目录中测试过。你说得对,它是@ 987654328@(我不得不手动复制代码);我已经更新了我的答案以上是关于协助 .htaccess 文件夹重写的主要内容,如果未能解决你的问题,请参考以下文章