2012-01-10 57 views
0

我怎么能结合这个改写块:的.htaccess,结合两个

RewriteCond %{HTTP_HOST} ^81\.216\.147\.82 [OR] 
RewriteCond %{HTTP_HOST} ^192\.168\.1\.9 [OR] 
RewriteCond %{HTTP_HOST} ^domain\.nu 
RewriteRule (.*) http://www.domain.nu/$1 [R=301,L] 

有了这一个?

RewriteCond $1 ^(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

首先一个刚刚从IP重写域。第二个做到这一点的index.php将被称为全自动,像domain.nu/blogg会经过的index.php

+0

只需将一个接一个放在.htaccess文件中?或者,如果你的意思是结合这两条规则,好奇你为什么要这样做? – 2012-01-10 21:02:18

+0

这将导致无限的重定向循环:/ – 2012-01-10 22:45:35

回答

0

如何通过更换第一改写:

RewriteCond %{HTTP_HOST} ^(81\.216\.147\.82|192\.168\.1\.9|domain\.nu) 
RewriteCond $1 ^(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule (.*) http://www.domain.nu/index.php/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^(81\.216\.147\.82|192\.168\.1\.9|domain\.nu) 
RewriteCond $1 ^index.php/(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule (.*) http://www.domain.nu/$1 [R=301,L] 

第一把手的情况下index.php是隐式的,第二个是明确的。两个cond集是互斥的,所以梯形逻辑工作。 (该条件是一个正则表达式,因此使用regexp语法而不是[OR]更简单。)

+0

这不会工作:/,当我导航到domain.nu/blogg它doesnt调用index.php,因为服务器返回404找不到:( – 2012-01-11 20:08:34

+0

好吧,我刚刚跑这些在我的测试虚拟机(调整)为我的IP等,他们为我工作。我检查rewrite.log上的重写,他们的工作正如我所料。你有访问rewrite.log – TerryE 2012-01-13 00:20:10

+0

而且你可以启用重写日志您是否还需要检查www.domain.nu服务器上的access.log/vhost.log以查看实际改写的内容? – TerryE 2012-01-13 00:21:59