簡體   English   中英

Apache2重寫-有條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM