在ubuntu机器上测试我的yii应用程序时,每次访问页面时/var/log/apache2/error.log都会显示以下错误。
客户端被服务器配置拒绝:/ var / www / item,referer:https://xxx.xx.xx.xxx/storemgr/issue/manage
在Windows中测试时没有错误记录。
但我在浏览器中访问网页时没有遇到任何问题。
我使用的网址:https://xxx.xx.xx.xxx/storemgr/item/manage
我的Apache配置:
<Directory /var/www/storemgr/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
main.php中的网址管理器
'urlManager'=>array
(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array
(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
.htaccess webroot的内容(即storemgr)
<ifModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
</ifModule>
请帮忙。
答案 0 :(得分:0)
的config.php
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'rules' => require(SITE_PATH_CONFIG . '_routes.php'
)
),
的.htaccess
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
虚拟主机
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName siteName
DocumentRoot /folder/name
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /folder/name/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
再次检查你的配置。还想说&#34; Windows&#34;中的路由存在问题。基于适应 - 简单的例子是&#34; \&#34;不相等&#34; /&#34;所以在* nix-list和Windows OS中可能会有麻烦。
同时重新检查您的路线。路由它匹配它将被使用,所以首先添加(到路由数组)路由短路由,简单的例子它应该是什么
'some/<id>/<action>' => 'some/doAction',
'some/<id>/someAction' => 'some/doActionSome'
第二个永远不会被使用。所以你应该先添加它。
PS:找出问题所在的最佳方法 - 找到崩溃的位置,控制器/方法等等。当你找到时 - 你可以看看那里使用了什么路线并理解你的麻烦(或提问)。没有它,没有人可以帮助你解决问题。
答案 1 :(得分:0)
根本没有Yii问题。我猜你最近升级到了13.10 Saucy。 它是Apache Server的一个变化。您需要添加新指令:grant 这是一个例子
<Directory /var/www/storemgr/>
Order allow,deny
Allow from all
# New directive for new Apache
Require all granted
</Directory>
升级到2.4 here
时查看更改