如何使用apache将任何URL重定向到我的index.html?

时间:2019-02-06 17:08:50

标签: apache url-redirection

无论URL是什么,我都希望我的网站指向index.html。
http://localhost/WebsiteName/
http://localhost/WebsiteName/whatever
http://localhost/WebsiteName/whatever/whatever-1/whatever-2/whatever-3/etc

通过在我的apache配置中使用以下重写代码:

RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule . index.html [L]  

当URL为以下任意一项时,我的URL正常工作:
http://localhost/WebsiteName/
http://localhost/WebsiteName/whatever

但是在这样或进一步扩展时会中断:
http://localhost/WebsiteName/whatever/
http://localhost/WebsiteName/whatever/whatever-1/whatever-2/whatever-3/etc

每当我使用其中一个中断的URL时,就好像目录中存在另一个文件夹“ whatever”。

我不想更改URL,无论它是什么,我都希望它指向我的index.html。

1 个答案:

答案 0 :(得分:0)

根据您所拥有的内容,所有这些url都应转到您的index.html。假定index.html位于DOCUMENT_ROOT。

我不确定您的问题是什么,但可能没有重写非文件的条件。当它是文件时,请停止重写。我注意到,无论使用哪种配置,网站上的任何更改都可以,但也许对您有用。

    RewriteEngine on
    ### If a uri leads to an actual file or directory (presumably with it's own index.html), then don't rewrite any further
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    RewriteRule ^ - [L]

    ### everything else
    RewriteRule . /index.html [L]