相对路径在.htaccess rewriterule中不起作用 - 需要重定向而不更改URL

时间:2013-03-14 12:35:46

标签: .htaccess mod-rewrite relative

这里看起来有很多关于RewriteRules,相对路径和重定向但没有更改URL的问题 - 但是,在我的所有搜索中,它们似乎都没有回答我的具体情况。

这是我当前的.htaccess文件:

 RewriteEngine On

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-l
 RewriteCond {REQUEST_FILENAME} !^images
 RewriteRule ^files(.*)$ ../../fileManager/server/php/files$1 [L]

基本上这是做什么的,如果某人输入的URL包含单词" files"在根目录之后,它然后将它们重定向到一个路径,该路径是两个目录,实际上包含该文件。

例如,如果您转到" http://www.mydomain.com/files/username/myImage.jpg",它实际上会将您重定向到" http://s281192971.onlinehome.us/cms/fileManager/server/php/files/username/myImage.jpg"。

问题在于它在本地运行良好,但当我将其上传到我的服务器时,它会停止工作。

我发现这方面的一种方法是只指定文件路径的绝对路径,如下所示:

 RewriteRule ^files(.*)$ http://s281192971.onlinehome.us/cms/fileManager/server/php/files$1 [L]

那"工作" - 问题是,它也改变了URL。我希望保留用户输入的网址(http://www.mydomain.com/files/username/myImage.jpg",而不是绝对路径。

这可能吗?

1 个答案:

答案 0 :(得分:1)

我没有尝试这个,但文档声明您可以使用URL路径进行替换。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

我的猜测就是让你的规则如下:

RewriteRule ^cms/mysite/files(.*)$ /fileManager/server/php/files$1 [L]