【发布时间】:2013-03-02 06:05:21
【问题描述】:
这是我现有的 .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 之后立即包含“/files”(即:http://www.someurl.com/files/username/myFile.jpg),那么它应该将用户定向到特定 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 行:
RewriteRule ^files(.+)$ ../../fileManager/server/php/files/$1 [L]
...然后第二个重写规则按我的意愿工作,如果我转到 / 或 /index.php,它会将我带到那里,但如果我转到任何其他 URL,它会将我引导到子页面.php。
所以我不明白的是:为什么里面有两个 RewriteRule,我无法访问 index.php,但只有第二个 RewriteRule,我可以?
另外,有人可以就我如何解决这个问题提供任何建议吗?
任何信息将不胜感激!提前致谢!
【问题讨论】:
标签: .htaccess mod-rewrite redirect