【发布时间】:2018-01-14 22:22:51
【问题描述】:
我正在尝试在我的本地 Windows 机器(PHP、Apache 2.4)上设置一个站点,而我的重定向规则正在创建一个无限循环。我不知道为什么。
我的主机文件:
127.0.0.1 learn.loc
127.0.0.1 www.learn.loc
我的 Apache httpd-vhosts.conf:
<VirtualHost *:80>
DocumentRoot "C:\websites\learn"
ServerName learn.loc
ServerAlias www.learn.loc
ErrorLog "logs/learn.loc-error.log"
CustomLog "logs/learn.loc-access.log" common
LogLevel alert rewrite:trace2
#PHP SETTINGS
php_value auto_prepend_file "C:\websites\learn\noop.php"
php_value open_basedir "C:\websites\learn"
php_value error_log "C:\websites\learn\php_error.log"
<Directory "C:\websites\learn">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
.htaccess(位于C:\websites\learn)
RewriteEngine on
RewriteRule ^yii /yii-v1/blog
RewriteRule ^yii/(.*) /yii-v1/blog/$1
我尝试访问的网页位于C:\websites\learn\yii-v1\blog\index.php。当我输入learn.loc/yii 时,Web 浏览器会无限期地重定向。 ModRewrite 跟踪显示:
[rid#1330178/initial] rewrite 'yii/blog/' -> '/yii/blog'
[rid#1330178/initial] trying to replace context docroot C:/websites/learn with context prefix
[rid#1330178/initial] internal redirect with /yii/blog [INTERNAL REDIRECT]
[rid#1331880/initial/redir#1] rewrite 'yii/blog' -> '/yii/blog'
[rid#1331880/initial/redir#1] trying to replace context docroot C:/websites/learn with context prefix
[rid#1331880/initial/redir#1] internal redirect with /yii/blog [INTERNAL REDIRECT]
[rid#1334a40/initial/redir#2] rewrite 'yii/blog' -> '/yii/blog'
[rid#1334a40/initial/redir#2] trying to replace context docroot C:/websites/learn with context prefix
[rid#1334a40/initial/redir#2] internal redirect with /yii/blog [INTERNAL REDIRECT]
[rid#1335b88/initial/redir#3] rewrite 'yii/blog' -> '/yii/blog'
[rid#1335b88/initial/redir#3] trying to replace context docroot C:/websites/learn with context prefix
[rid#1335b88/initial/redir#3] internal redirect with /yii/blog [INTERNAL REDIRECT]
[rid#1336e30/initial/redir#4] rewrite 'yii/blog' -> '/yii/blog'
...
请注意,请求 ID(第一列)不同,因此会发生某种无限递归,我不知道为什么。没有 Apache 或 PHP 错误。
【问题讨论】:
标签: php apache .htaccess redirect mod-rewrite