3
我試圖在本地Windows機器上安裝一個站點(PHP,Apache 2.4),我的重定向規則創建了一個inifinite循環。我無法弄清楚爲什麼。Apache ModRewrite保持重定向
我主機文件:
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錯誤。
感謝您的工作:
這個限制可以在Apache的配置在使用該指令來改變。你能解釋一下發生了什麼,所以我和其他人可以從我的錯誤中學習嗎? – BeetleJuice
是的,我只是在答案中添加。 – anubhava
好吧,我明白了。網站讓我接受你的答案還爲時過早。你知道在ModRewrite trace中「*試圖替換上下文docroot *」究竟意味着什麼? – BeetleJuice