[英]Apache2 rewrite - conditional
我的項目的網絡根目錄中有以下.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嗎?
例如
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]
現在已經足夠滿足我的需求。
如果react_www
是項目的根目錄,並且您沒有引用該目錄上方的資產(公開地通過URL),則應為.htaccess
。 然后它將變成
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.html [END]
您不需要RewriteBase
因為您沒有在進行服務器端的外部重定向,而只希望該目錄下的虛擬URL都提供相同的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.