这里是我现有的.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]
RewriteRule ^(.+)$ subpage.php?url=$1 [QSA,L]
我会尝试是最好的,我可以解释这个没有使它过于复杂。最终,它归结为:
如果一个URL包含紧跟在根URL(即:http://www.someurl.com/files/username/myFile.jpg)之后的“/ files”,那么它应该引导用户到一个特定的URL(在这个例子中:../。 ./fileManager/server/php/files/$1)。
在第二条规则中,如果URL在根URL之后包含除“/ files”之外的任何内容,则将其指向“subpage.php”。 (即:http://www.someurl.com/aboutme)
这两个工作都很好。但是,在这两个规则都适用的情况下,我永远无法访问/或/index.php(根URL:http://www.someurl.com)。我一直在重定向到subpage.php。
但是等等!还有更多!
如果我删除重写规则第一行:
RewriteRule ^files(.+)$ ../../fileManager/server/php/files/$1 [L]
...那么第二重写规则工程,我想它,因为如果我去/或的index.php,它需要我那里,但如果我去任何其他网址,它会指示我subpage.php。
所以我不明白的是:为什么在这两个RewriteRules中,我无法访问index.php,但只有第二个RewriteRule在那里,我可以吗?
此外,有谁可以提供任何建议,我怎么能解决这个问题?
任何信息将不胜感激!提前致谢!
这样做的窍门!非常感谢! – 2013-03-14 02:37:28
作为一个后续问题 - 当我将文件上传到我的服务器时,我使用相对路径不起作用,尽管它在本地工作。如果我将其更改为完整的文件路径,它会工作,但是,URL也会更改 - 我不想要。我上传后有没有办法让我的相对路径有效? – 2013-03-14 11:40:20
可能值得一个单独的问题,但看看[RewriteBase指令](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase)。 – andyhassall 2013-03-21 18:42:12