首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mod_rewrite重定向循环

mod_rewrite重定向循环
EN

Stack Overflow用户
提问于 2012-02-05 06:42:55
回答 3查看 1.8K关注 0票数 0

下面是我的目录结构:

http://files.example.com/files/

所有文件都位于files/目录中

我希望URL是http://files.example.com/somefile.txt,即使somefile.txt在文件/目录中。

这是我的.htaccess文件:

代码语言:javascript
运行
复制
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ files/$1

如果有人请求http://files.example.com/somefile.txt,而somefile.txt位于文件/目录中,则一切正常。

但是,如果somefile.txt不存在,则会导致内部服务器错误(500),重定向次数过多。

如果指定的文件不存在,我如何将用户发送到404页面?

例如:转到http://files.example.com/a-file-that-does-not-exist.txt将重定向到自定义的404页面,而不是太多的重定向?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-06 02:14:36

这行得通!

代码语言:javascript
运行
复制
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_URI} -f
RewriteRule ^(.*)$ files/$1
票数 2
EN

Stack Overflow用户

发布于 2012-02-05 07:19:29

尝试:

代码语言:javascript
运行
复制
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/files/
RewriteRule ^(.*)$ /files/$1 [L]

如果/files/中不存在该文件,那么让重写来处理404,这意味着您不需要!-d和!-f检查。

票数 1
EN

Stack Overflow用户

发布于 2012-02-05 06:47:09

关于

代码语言:javascript
运行
复制
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond files/%{REQUEST_FILENAME} -f
RewriteRule !^files/(.*)$ files/$1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9145282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档