2013-02-09 80 views
0

我想2個獨立的虛擬目錄重定向到使用的RewriteRules htaccess的文件的htaccess的RewriteRules 2子文件夾到2個獨立的文件

第一虛擬目錄admin並應重定向到admin.php

http://dev.int/shop/admin>http://dev.int/shop/admin.php/

http://dev.int/shop/admin/>http://dev.int/shop/admin.php/

http://dev.int/shop/admin/products>http://dev.int/shop/admin.php/products

http://dev.int/shop/admin/products/add>http://dev.int/shop/admin.php/products/add

第二虛擬目錄爲別的,應該重定向到index.php

http://dev.int/shop/anything>http://dev.int/shop/index.php/anything

http://dev.int/shop/anything/else>http://dev.int/shop/index.php/anything/else

還存在一些其他標準目錄assets_test和文件robots.txtsitemap.xml不應該被重定向

這是我有這麼遠,但它不工作:(

RewriteEngine on 
RewriteCond $1 !^(assets|_test) 
RewriteCond $1 !^(index\.php|admin\.php|robots\.txt|sitemap\.xml) 
RewriteRule ^admin/?(.*)$ /shop/admin.php/$1 [L] 
RewriteRule ^(?:admin)/?(.*)$ /shop/index.php/$1 [L] 
+0

基本上字符串'admin'應該用'admin.php'替換,保持相同的URL結構,同樣適用於字符串'index'。是對的嗎? – 2013-02-09 22:49:54

+0

@faa'admin'是的,但是除了assets,_test,robots.txt和sitemap.xml之外的其他東西都應該轉到index.php – Christian 2013-02-09 23:00:20

+0

還不完全清楚。到'index.php,'哪裏?這裏:你問題中的'http:// dev.int/shop/index.php/anything'在'/ shop'目錄中,而在這裏:'/ itmanx/shop/draytek/index.php/$ 1'在'draytek'目錄。請更新您的問題與缺少的信息。 – 2013-02-09 23:29:12

回答

1

你可以試試這個:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

# "admin" string is present 
RewriteCond %{REQUEST_URI} !(assets|_test|robots\.txt|sitemap\.xml) [NC] 
RewriteCond %{REQUEST_URI} ^/shop/admin(.*)?/? [NC] 
RewriteCond %{REQUEST_URI} !admin\.php   [NC] 
RewriteRule .    shop/admin.php%1  [R=301,L] 

# "admin" string is NOT present 
RewriteCond %{REQUEST_URI} !(assets|_test|robots\.txt|sitemap\.xml|admin) [NC] 
RewriteCond %{REQUEST_URI} ^/shop(.*)?/?  [NC] 
RewriteCond %{REQUEST_URI} !index\.php   [NC] 
RewriteRule .    shop/index.php%1  [R=301,L] 

admin字符串是/shop/文件夾後,目前,永久重定向:

http://dev.int/shop/admin/any/number/of/folders有或沒​​有斜線。

到:

http://dev.int/shop/admin.php/any/number/of/folders

的路徑流與admin.php更換admin沒有任何其他修飾。


admin串不存在在所有,重定向永久:

http://dev.int/shop/any/number/of/folders帶或不帶斜線。

到:

http://dev.int/shop/index.php/any/number/of/folders

插入index.php的路徑流中的/shop/文件夾後,沒有任何其他修飾。當進入的URL包含的上述規則


無施加:

assets_testrobots.txt或路徑流中sitemap.xml

對於無聲映射,請從[R=301,L]刪除R=301

0

感謝@faa的支持和指導。以下是工作答案。

RewriteEngine On 

# backend 
RewriteCond $1 !^(\.php) [NC] 
RewriteRule ^admin(.*)$ /itmanx/shop/draytek/admin.php$1 [R=301,L] 

# frontend 
RewriteCond $1 !^(index\.php|admin|assets|__test|robots\.txt|sitemap\.xml) [NC] 
RewriteRule ^(.*)$ /itmanx/shop/draytek/index.php/$1 [R=301,L] 
相關問題