2013-06-28 29 views
0

以下是我的.htaccess文件中的一段。 我想從Apache的以下行爲(目前該網站是在本地主機,但不應該的問題,對不對?):.htaccess否定式超前正則表達式格式錯誤

如果請求的資源是別的以外

{site_url}/core 

{site_url}/login 

{site_url}/pseudo/path/name 

資源供應萬畝ST是

{site_url}/site/pseudo/path/name 

否則網址服務必須被要求什麼{SITE_URL} /芯或{SITE_URL} /登錄,即。

.htaccess文件是:

<IfModule mod_alias.c> 

    AliasMatch ^/(?!core|login)(/?.*)$ /site/$2 
    Header add X-Enabled mod_alias 

</IfModule> 

但這似乎並沒有被工作,並返回一個錯誤。我對Regular Expressions不是很熟悉,並且正在努力學習這些。所以我從這個表達式推斷出:

如果'/'後面的表達式,即site_url之後的URI不匹配核心或登錄(?!core | login)),並且後面跟着任何東西,包括一個子文件夾(/?.*)$可選斜槓及其後的任何內容,將別名設置爲/ site /(在第二個圓括號中匹配的任何內容)。

該模塊正在工作,我只使用Header添加部分檢查,問題是正則表達式。

請幫忙。

回答

2

在開始的時候請假^。您擁有的正則表達式匹配/pseudo/path/name,但不匹配{site_url}/pseudo/path/name,因爲您告訴它文本必須以/開頭。

另外,要小心,因爲你的正則表達式排除像{site_url}/corel之類的東西。這可能不會,除非你有核心開始其他目錄是一個問題,但如果你真的想使它比{site_url}/core{site_url}/login匹配其他任何東西,使用這個表達式:

/(?!core$|login$)(/?.*)$