2

我正在完成我在 Yii 应用程序上的工作,我想要更漂亮的 URL。我通过谷歌搜索网站和 Yii wiki 并按照手册进行操作。但是,我被困在无法从我的 URL 中隐藏 index.php 的地步。在我的 url 中使用 index.php 它可以工作,该网站打开,没有它,它让我服务器 404。

这是我的 main.config:

'urlManager'=>array(
 'urlFormat'=>'path',
 'showScriptName'=>false,
 'rules'=>array(
   '<action>'=>'site/<action>',
   '<controller:\w+>/<id:\d+>' => '<controller>/view',
   '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
   '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
 ),
),

将“showScriptName”设置为 false 我得到 404。

这是我的 .htaccess

RewriteEngine on
RewriteBase /
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php)

# otherwise forward it to index.php
RewriteRule ^(.+)$ index.php?$1 [PT,L,QSA]

我目前正在使用 WAMP 在 localhost 上测试该站点。Apache 上的 Mod_rewrite 正在运行。将 http.conf 更改为 Options Indexes FollowSymLinks Allow Override All。

我还缺少什么?

4

4 回答 4

3

对于那些挣扎的人!将 .htaccess 放在应用程序的根目录中,而不是在受保护的文件夹中!!!

于 2013-09-21T08:57:34.740 回答
1

尝试添加:

'' => 'site/index'

到您的 urlManager 'rules' 数组。逻辑是,Yii 无法将模式请求''与您定义的任何规则相匹配。

于 2016-04-19T20:39:22.767 回答
0
    'urlManager' => array(
            'urlFormat' => 'path',
            'urlSuffix' => '.html',
            'showScriptName' => false,
            //  'caseSensitive'=>false, 
            'rules' => array(
                 '<action>'=>'site/<action>',
   '<controller:\w+>/<id:\d+>' => '<controller>/view',
   '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
   '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ),
        ),

在你的 .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

在项目文件夹中上传您的 htaccess。

于 2014-12-30T13:32:32.357 回答
0

就我而言,使用相同的设置会出现这两种情况:

  1. https://somedomain.com/action123 [失败,愚蠢的 404]
  2. https://somedomain.com/action123/ [成功]

问题是,最后的“/”符号(需要更多规则)

于 2018-05-15T12:10:26.883 回答