反应路由器的apache配置与browserHistory和baseName子目录

时间:2016-10-18 01:41:09

标签: apache mod-rewrite react-router

我的应用程序位于主网站的子目录中。我已经实现了basename和browserHistory,并将以下推荐的apache重写代码放入app文件夹中的.htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]

这个推荐的apache重写可以将browserHistory URL返回到应用程序index.html。由于某种原因(见下文),它没有在索引页面HTML中找到EMBEDDED的“style.css”和“brundle.js”。我在示例.htaccess文件中看到的唯一不同的是我的RewriteBase值为“/ react_librivox_search”,因为我的应用程序位于该站点的子文件夹中。

RewriteBase /react_librivox_search

我已经使用.htaccess中的路径和文件的各种不同的开始和结束斜杠进行了测试,问题不是那样。

问题似乎是react应用程序正在为包含PATH变量的一部分的文件设置GET值,该变量应该只是react-router定义的一部分:

<Route path="/book/:id" component={BookDataDisplay}/>

请注意,附加路径段“/ book /”将附加到基本URL,并且当在THAT目录中找不到文件(实际上并不存在)时,服务器将返回“index.html”以查找丢失的内容文件,它解释了librivox_search.css文件和“&lt;”的mime类型错误bundle.js文件的错误。

The stylesheet http://jstest.dd:8083/react_librivox_search/book/librivox_search.css was not loaded because its MIME type, “text/html”, is not “text/css”.       librivox_search.css (embedded in index.html)

SyntaxError: expected expression, got '<'       bundle.js (embedded in index.html)

同样意外地将“book”添加到URL也在这里工作。嵌入的index.html文件都不在该子目录中。但我希望在路径中保留“book”,因为它标识了传递给路由的KIND数据。 。 。它将其与其他类型的数据区分开来。我只是不想将它发送到SERVER(但也许是无法避免的),因为实际的index.html嵌入式文件不存在。

我想重写“/ react_librivox_search / book”,因为“/ react_librivxo_search”可能会起作用,但它似乎是一种hacky方式。而且我不想将重复的bundle.js文件放在多个目录中(这有效,但是 什么是维护噩梦,这无疑是不好的做法)。

或者是否建议在REAL“book”子文件夹中放置一个单独的.htaccess,该子文件夹根据文件请求返回“librivox_search.css”和“bundle.js”(在基本目录中)?

0 个答案:

没有答案