下面是我的目录结构:
http://files.example.com/files/
所有文件都位于files/目录中
我希望URL是http://files.example.com/somefile.txt,即使somefile.txt在文件/目录中。
这是我的.htaccess文件:
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页面,而不是太多的重定向?
发布于 2012-02-06 02:14:36
这行得通!
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_URI} -f
RewriteRule ^(.*)$ files/$1
发布于 2012-02-05 07:19:29
尝试:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/files/
RewriteRule ^(.*)$ /files/$1 [L]
如果/files/中不存在该文件,那么让重写来处理404,这意味着您不需要!-d和!-f检查。
发布于 2012-02-05 06:47:09
关于
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond files/%{REQUEST_FILENAME} -f
RewriteRule !^files/(.*)$ files/$1
https://stackoverflow.com/questions/9145282
复制相似问题