如何为不同的路径设置URL重写规则

时间:2013-07-24 12:18:16

标签: apache mod-rewrite url-rewriting yii yii-url-manager

我在.htaccess文件中有此声明:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    IndexIgnore */*

    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>

我的文件存储在:C:\xampp\htdocs\test505,com\中,我有一个名为test505.com的虚拟主机指向该目录,以及C:\Windows\System32\drivers\etc\hosts文件中定义的主机,也称为{{1} }。

我甚至定义了一个test505.com虚拟主机,它指向localhost,并且工作正常。

如果我运行:C:\xampp\htdocs并在/之后填写网址,它将按预期正常工作,但如果我这样做:http://test505.com/,它将无法正常工作,并且网址不会被覆盖。 ..

如何让它在两个主机名上正常运行,从不指定路径名?

我不知道如何解决这个问题,所以感谢任何帮助!


注意:我在Yii Framework中使用PHP,并启用了URL格式的URL路径。

1 个答案:

答案 0 :(得分:0)

 # For sites running on a port other than 80
RewriteCond %{HTTP_HOST}   !^localhost\/test505\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://test505.com:%{SERVER_PORT}/$1 [L,R]

# And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^localhost\/test505\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://test505.com/$1 [L,R]

这样的事情可以提供帮助。尝试阅读http://httpd.apache.org/docs/2.0/misc/rewriteguide.html