Dot-Htaccess

當 URL 中未指定頁面時,我需要正確重定向什麼 .htaccess RewriteRule?

  • February 27, 2019

在我的目錄中

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

index.html.var也許設置為你的DirectoryIndex. 在這種情況下,mod_dir 會為此文件發出一個內部子請求。(這個文件存在嗎?)

如何將其與 mod_rewrite 匹配取決於您的 Apache 版本(2.2 與 2.4)。在 Apache 2.2 中,mod_dirmod_rewrite 之前執行。在 2.4 中順序顛倒了。

在 Apache 2.4 中,模式RewriteRule 應該^$足夠了(因為它在 mod_dir 發出子請求之前被處理)。如果目錄索引文件不存在,那麼這也應該適用於 Apache 2.2。但是,要抓住這兩種可能性,然後檢查兩者……

例如,將您的第一個更改RewriteRule為:

RewriteRule ^(index\.html\.var)?$ http://127.0.0.1:49900/home [P,L]

或者,您可以禁用文件DirectoryIndex頂部的(如果未使用).htaccess

DirectoryIndex disabled

引用自:https://serverfault.com/questions/956026