我项目的网络根目录中有以下.htaccess
文件:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /repos/eamorr.co.uk/react_www/index.html [L,QSA]
以上作品。
当我导航到:
http://localhost/repos/eamorr.co.uk/react_www
我看到了我的主页。
当我导航到:
http://localhost/repos/eamorr.co.uk/react_www/contact-us
我看到"联系我们"我的主页的路线(我的网页是用React写的)。
行。大。
现在,有些用户在Linux上:
当他们签出代码时,他们会看到网站的网址略有不同:
http://localhost/_eamorr/develop/eamorr.co.uk/react_www/
和
http://localhost/_eamorr/develop/eamorr.co.uk/react_www/contact-us
关于.htaccess
文件的这一行:
RewriteRule . /repos/eamorr.co.uk/react_www/index.html [L,QSA]
而不是.
是否有一些条件我可以从不同的路径投入服务index.html?
e.g。
RewriteRule {{condition1???}} /repos/eamorr.co.uk/react_www/index.html [L,QSA]
或(不同条件=不同路径):
RewriteRule {{condition1???}} /_eamorr/develop/eamorr.co.uk/react_www/index.html [L,QSA]
我担心我的Apache知识不能快速完成,而且我已经花了好几个小时了!
=================
解决方案:
使用级联htaccess重写规则设置,如下所示:
RewriteEngine On
#RewriteBase /
#Linux localhost:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^.*repos/eamorr.co.uk/react_www.*$
RewriteRule ^([^/]+\.?[^/])*$ /repos/eamorr.co.uk/react_www/index.html [L,QSA]
#Mac localhost:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^.*_eamorr/eamorr.co.uk/react_www.*$
RewriteRule ^([^/]+\.?[^/])*$ /_eamorr/eamorr.co.uk/react_www/index.html [L,QSA]
#develop .co.uk
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^.*gitWebFlow/eamorr.co.uk/develop/react_www.*$
RewriteRule ^([^/]+\.?[^/])*$ /gitWebFlow/eamorr.co.uk/develop/react_www/index.html [L,QSA]
#master .co.uk
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^.*gitWebFlow/eamorr.co.uk/master/react_www.*$
RewriteRule ^([^/]+\.?[^/])*$ /gitWebFlow/eamorr.co.uk/master/react_www/index.html [L,QSA]
#default
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.html [L,QSA]
这足以满足我现在的需求。
答案 0 :(得分:1)
如果react_www
是您项目的根目录,并且您没有引用该目录上方的资源(公开,通过网址),那么.htaccess
应该是这里的。{1}}。然后就会变成
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.html [END]
您不需要RewriteBase
,因为您没有进行服务器端外部重定向,只是希望该目录下的虚拟URL都提供相同的文件。