2013-10-21 32 views
0

我有一個問題在我的htaccess文件..如何允許一些具體他人的網址和休息會重定向到維護頁面

http://www.example.com/customer/contract/download
http://www.example.come/customer/contract/upload

這些上面的網址應該工作以及其他休息網址應該重定向到maintenance.html。

我如何在我的htaccess文件中定義這些情況?

這裏是我的htaccess代碼..

RewriteEngine on 
IndexIgnore * 

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
RewriteRule ^(.*)$ public/maintenance.html [L] 

回答

0

首先,你有兩條線,捕捉所有的URL,並有[L] last標誌。您的第二個RewriteRule僅對在第一個RewriteCond中配置的例外起作用。你需要這樣的改變以適應你的第二個重寫規則開始發揮作用:

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php) 
RewriteRule ^(.*)$ public/maintenance.html [L] 

添加您的例外網址到the.htaccess文件。

如果它們是有效的目錄,則只需添加一行即可排除全部目錄。您需要添加[OR]標誌,這意味着RewriteCond必須爲真。沒有這個標誌,規則只有在兩個條件都適用時才匹配。

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php) [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ public/maintenance.html [L] 

如果他們是通過第一重寫規則改寫,你必須添加的第一個規則的另一條件:

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php) 
RewriteCond $1 customer/contract/(download|upload) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

RewriteRule ^(.*)$ public/maintenance.html [L] 

這裏的第一條規則將只匹配你的特殊的網址,第二條規則將匹配一切。

+0

我爲我的項目中使用路由系統中的URL看起來像這樣.. $路線['contrato// /((*)(*)。 。*)'] ='generar_contrato/contrato/$ 1/$ 2/0/$ 3'; $ route ['contrato /(.*)/(.*)/(.*)/(.*)'] ='generar_contrato/contrato/$ 1/$ 2/$ 3/$ 4'; – anna

+0

我爲您的案例添加了代碼。我希望它現在可以工作。 –

0

下面的規則應該爲你工作:

RewriteEngine on 
IndexIgnore * 

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

RewriteCond $1 !^(index\.php|public|images|robots\.txt|favicon\.ico|redirigir\.php|customer) 
RewriteRule ^(.*)$ public/maintenance.html [L] 
相關問題