2014-11-04 80 views
0

我想在一個.htaccess文件中得到3個mod_rewrites一起工作。多個mod_rewrite衝突

我想以下幾點:

school.mysite.com => mysite.com/index.php?inst=school

mysite.com/french => mysite.com/subject.php?子=法國

school.mysite.com/french => mysite.com/subject.php?inst=school &子=法語

我以前曾得到了前兩個工作,但不能爲生命我得到第三個工作。 一個星期,我屈服了,並要求幫助這裏後,幸運的是我anubhava給我的解決方案真的很快有:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ index.php?inst=%1&sub=$1 [L,QSA] 

對自己作品的代碼完美,但我想上一棒的月亮還希望其他2仍然沿着它工作...而他們不。

從那以後,我一直對他們馬不停蹄地又可以得到受一個用下面的代碼

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/([a-zA-Z_]+)/?$ 
RewriteRule ^(.*)$ subject.php?sub=%1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ index.php?inst=%1&sub=$1 [L,QSA] 

與它一起工作,但我不能讓子域沿側的工作吧,我嘗試是...

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^$ 
RewriteRule ^(.*)$ index.php?institute=%1 [L] 

我想通過檢查URI是否爲空可能會觸發它。 而不是在我的頭靠在牆上再打一個星期,我想我會問在第一天結束:) 如果它有任何區別,他們在.htaccess文件中的子域檢查順序,主題檢查,然後合併檢查。

我假設我的邏輯有問題,請幫忙。

問候

+0

如果你最終得到一個空白的'inst'參數,這有什麼關係嗎?即'inst =&school = french'會好嗎? – arco444 2014-11-04 16:28:20

+0

嗨arco444,不應該不重要,一些邏輯可以很容易地應用到頁面來檢查那個 – Zenonline 2014-11-04 19:02:07

回答

1

,如果你命令他們如下它應該工作:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ subject.php?inst=%1&sub=$1 [L,QSA] 

RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^/?$ index.php?inst=%1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/$ subject.php?sub=$1 [L,QSA] 

首先將匹配一個子的請求URI,第二子站點一空白的uri,第三個沒有uri的子域。前兩個的順序很重要,如果你想的話,第三個可能是第一個。

+0

嗨arco444。子域只有一點仍然不適用於我:(它不創建一個查詢字符串,$ _GET數組是完全空的。我已經嘗試了它自己(與其他規則註釋掉),它確實不工作 – Zenonline 2014-11-04 19:12:48

+1

當你刪除'RewriteCond%{REQUEST_FILENAME}!-d'時,它應該可以工作 – 2014-11-04 20:43:03

+0

對不起以前的消息被截斷......感謝Olaf做到了這一招!一切都很完美......我發現如果我刪除複合的主題和學校牆它也差不多工作OK ...因爲當我使用複合規則,它發送給我的索引,而不是主題頁面,但正如說你的修復使所有工作正確再次感謝arco444和奧拉夫Dietsche – Zenonline 2014-11-05 08:00:31