【发布时间】:2014-05-13 09:28:50
【问题描述】:
我想使用带有“web”目录的 silex 来存储公共文件。 结构将如下所示:
-project
--vendor
----silex
----...
--web
----index.php
--.htaccess
所以我想要一个 .htaccess 脚本来完成这些任务:
- 如果我请求一个文件 ./myInstallationPath/file.php 它应该检查该文件是否存在于 ./myInstallationPath/web/ 中,如果存在,则重定向到它内部 .否则它应该内部重定向到 ./myInstallationPath/web/index.php
- 如果我请求 ./myInstallationPath/web/,它应该从 URL 中删除“web/”,这样用户就不会看到“web”目录。那么就应该使用上面的点。
由于项目的路径可以是根目录,也可以是子文件夹,所以安装路径可以通过以下方式确定:
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=INSTALLATION_ROUTE:%1]
这是我现有的代码:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/%{ENV:INSTALLATION_ROUTE}web/$1 !-f [NC]
RewriteCond %{DOCUMENT_ROOT}/%{ENV:INSTALLATION_ROUTE}web/$1 !-d [NC]
RewriteRule (.*) %{ENV:INSTALLATION_ROUTE}web/index.php [L]
它会检查该文件是否在 web/ 中不存在,如果存在,它将重定向到 index.php 其他规则如何才能满足要求?
【问题讨论】:
标签: .htaccess symfony mod-rewrite symfony1 silex