在我的目录中
我有以下.htaccess
文件:
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:49900/home [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:49900/$1 [P,L]
如果我提供一个页面(带有 .eps 文件的节点应用程序),它就会正确路由
http://tanguay.info/webtech/home
但如果我不提供页面:
它给出了这个错误:
Error: ENOENT: no such file or directory, open '/home/tanguay2/public_html/n49900_dpndev/systemPages/index.html.var.ejs'
它似乎将要去index.html.var.ejs
而不是http://127.0.0.1:49900/home
我指定的,但我不知道它从哪里获得这些index.html.var
信息。
http://tanguay.info:49900
如果我没有提供页面,如何让它正确链接?
答案1
index.html.var
可能设置为您的DirectoryIndex
。在这种情况下,mod_dir 会针对此文档发出内部子请求。(此文件存在吗?)
如何将其与 mod_rewrite 匹配取决于您的 Apache 版本(2.2 还是 2.4)。在 Apache 2.2 中,mod_dir 执行前mod_rewrite. 在 2.4 中顺序被颠倒了。
在 Apache 2.4 中RewriteRule
图案of^$
应该足够了(因为它是在 mod_dir 发出子请求之前处理的)。如果目录索引文档不存在,那么这也应该适用于 Apache 2.2。但是,要捕获这两种可能性,请检查两者...
例如,将您的第一个RewriteRule
内容更改为:
RewriteRule ^(index\.html\.var)?$ http://127.0.0.1:49900/home [P,L]
或者,您可以禁用文件DirectoryIndex
顶部的(如果它未被使用).htaccess
:
DirectoryIndex disabled