2013-02-28 70 views
0

我有一個yii應用程序,它具有獨立的後端和前端。我正在嘗試製作友好的網址。 我已經嘗試了一些在線工具,但不能讓它正確 所以我希望這個網址後端/前端應用程序的htacess重寫規則

  • http://mydomain.lc/abs/admin/some/crazy/urls(for example some/crazy/urls can be admin/index)

將被改寫爲:

  • http://mydomain.lc/abs/backend.php/some/crazy/urls(because this url works directly)

而且我也有前端網站,但他們都在同一個項目中,因此他們共享.httacess。 對的.htaccess的前端規則是: 這個網址:

  • http://mydomain.lc/abs/some/crazy/urls(some can not be admin here, so we can differentiate btw fron and back end)

應該

  • http://mydomain.lc/abs/index.php/some/crazy/urls

我:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^abs/admin/?(.*?)$ abs/backend.php?url=$1 [QSA,L] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(?!abs/admin\/)(.*?)$ abs/index.php?url=$1 [QSA,L] 

</IfModule> 

上述腳本無法正常工作。 根目錄在abs文件夾下,並且根目錄下的.htaccess爲

在此先感謝。

+0

哪一個不工作?第一或第二個RewriteRule?甚至是兩者? – 2013-02-28 04:20:46

+0

根據你的說法,root應該是'http:// mydomain.lc /'不是'http:// mydomain.lc/abs /'。請解釋並確認.htaccess文件的位置。 – 2013-02-28 04:28:26

+0

root在這裏:'http:// mydomain.lc/abs /',因爲我沒有欠我放的地方,所以項目位於(開始spot index.php)在abs下並且.htaccess在那裏,但是不直接在http:// mydomain.lc/thanks – Elbek 2013-02-28 04:47:19

回答

1

你不必改變除了RewriteBase /什麼RewriteBase /abs

RewriteEngine On 
RewriteBase /abs 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^admin/?(.*?)$ backend.php?url=$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(?!admin\/)(.*?)$ index.php?url=$1 [QSA,L] 
+0

作爲一種魅力。謝謝。 – Elbek 2013-02-28 15:36:13

1

我想問題是與RewriteBase

更新根據最後OP評論:

您可以在.htaccess文件中/abs目錄試試這個this one is correct: backend.php/some/crazy/urls

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase /abs 

# Backend admin 
RewriteCond %{REQUEST_URI} !backend\.php [NC] 
RewriteRule ^admin(.*) /backend.php/$1 [QSA,L,NC] 

# Frontend 
RewriteCond %{REQUEST_URI} !index\.php  [NC] 
RewriteCond %{REQUEST_URI} !admin   [NC] 
RewriteRule ^(.*)  /index.php/$1 [QSA,L,NC] 
+0

感謝您的貢獻。我們可以糾正這個規則來重寫這個:backend.php/some/crazy/url而不是admin/backend。 PHP的?url =感謝一個男人。 – Elbek 2013-02-28 05:51:40

+0

它被糾正了。檢查我更新的答案。 – 2013-02-28 05:52:11

+0

我有'%1'而不是'$ 1',我也糾正了。 – 2013-02-28 05:54:05