当 URL 中未指定页面时,我需要什么 .htaccess RewriteRule 才能正确重定向?

当 URL 中未指定页面时,我需要什么 .htaccess RewriteRule 才能正确重定向?

在我的目录中

http://tanguay.info/webtech

我有以下.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

但如果我不提供页面:

http://tanguay.info/webtech

它给出了这个错误:

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

相关内容