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

Apache 如何为不同路径设置URL重写规则,apache,mod-rewrite,url-rewriting,yii,yii-url-manager,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

我的
.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>

选项+FollowSymLinks
IndexIgnore*/*
重新启动发动机
RewriteCond%{REQUEST_FILENAME}-s[或]
RewriteCond%{REQUEST_FILENAME}-l[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^.*$-[NC,L]
重写规则^.*$index.php[NC,L]
我的文件存储在:
C:\xampp\htdocs\test505,com\
中,我有一个名为
test505.com
的虚拟主机指向该目录,还有一个在
C:\Windows\System32\drivers\etc\hosts
文件中定义的主机,也称为
test505.com

我甚至定义了一个
localhost
虚拟主机,它指向
C:\xampp\htdocs
,并且运行良好

如果我运行:
并在/之后填充URL,它将按预期正常工作,但如果我运行:
localhost/test505.com/
,它将无法正常工作,URL不会被覆盖

如何使它在两个主机名上都正常运行,而不必考虑路径名

我不知道如何解决这个问题,所以非常感谢您的帮助


注意:我将PHP与Yii框架结合使用,并为URL格式化启用了URL路径

 # 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]

像这样的东西会有帮助。试着读一下

我在哪里提到了端口?嗯。。你和波特怎么了?这是最典型的例子。若你们已经定义了虚拟主机,你们需要在那个里定义端口,若它是diff,那个么80,你们需要使用第一个变量,若80是第二个变量。什么问题?