0

我的 htaccess 文件有问题..

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

以上这些 url 应该可以工作,其余的 url 应该重定向到 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]
4

2 回答 2

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]
于 2013-10-21T12:11:32.467 回答
0

首先,您有两行捕获所有 URL 并具有[L] last标志。您的第二个RewriteRule仅对第一个中配置的异常起作用RewriteCond。您需要像这样进行更改才能使您的第二个 RewriteRule 发挥作用:

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

然后将您的异常 URL 添加到 .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]

在这里,第一条规则将只匹配您的特殊 URL,而第二条规则将匹配其他所有内容。

于 2013-10-21T11:33:04.910 回答