如果文件或文件夾不存在,我有以下配置僅可用於index.html
,以便與AngularJS一起使用。Apache根據REQUEST_URI提供不同的index.html
<VirtualHost 192.168.0.1:80>
DocumentRoot /path/to/my/folder
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule^- [L]
# If the requested resource doesn't exist, use index.html
RewriteRule^/index.html
ErrorLog "/var/log/apache2/angular.com-error.log"
CustomLog "/var/log/apache2/angular.com-access.log" common
</VirtualHost>
我想什麼做的是: 檢查REQUEST_URI
如果與像茹郎前綴開始| ES |克,在前面加上這2個字母index.html
所以,如果訪問example.com
Apache將index.html的服務從當前的根,但如果我訪問example.com/ru
Apache將成爲index.html
從DOCUMENT_ROOT
+ RU文件夾/ru/index.html
我做了這樣的事情:
<VirtualHost 192.168.0.1:80>
DocumentRoot /path/to/my/folder
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule^- [L]
# If the requested resource doesn't exist, use index.html
RewriteCond %{REQUEST_URI} ^/(ru|es|gr)/
RewriteRule^$1/index.html
ErrorLog "/var/log/apache2/angular.com-error.log"
CustomLog "/var/log/apache2/angular.com-access.log" common
</VirtualHost>
但似乎沒有工作。
我想默認情況下,如果沒有指定文件名,Web服務器將從各自的文件夾提供'index.html'。嘗試刪除規則? – Icycool
@Icycool嗨,當訪問'example/ru'時,它會正確地提供'index.html',但是當訪問'example/ru/somepage/subpage /'時,它將從根目錄服務'index.html',因爲這個文件夾不會不存在,但它以'ru'開始,所以我需要'/ ru/index.html'來提供服務。 – Froxz
如何在前面添加斜線? 'RewriteRule ^/$ 1/index.html' – Icycool