如何隐藏在阿帕奇/的.htaccess / mod_rewrite的警予index.php文件?(H

2019-10-21 01:25发布

我有这个htaccess文件:

RewriteEngine on
#if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

而我使用Yii 1.1.15( 这个网站是从1.1.13版本中获得 ,但这样的版本不再提供下载,所以我用它在1.1.15框架安装- althought却没有这个问题远我所看到的),具有像CONF / main.php文件:

<?php

return array(
    'basePath'=>dirname(dirname(__FILE__)),
    'name'=>'Grand Duval - Códigos premiados',
    'defaultController'=>'participantes/create',
    'language'=>'es',

    // preloading 'log' component
    'preload'=>array('log'),

    // autoloading model and component classes
    'import'=>array(
        'application.models.*',
        'application.components.*',
    ),

    'modules'=>array(
        'gii'=>array(
            'class'=>'system.gii.GiiModule',
            'password'=>'mypassword',
            'ipFilters'=>array('127.0.0.1', '::1'),
        ),
    ),

    // application components
    'components'=>array(
        'user'=>array(
            // enable cookie-based authentication
            'allowAutoLogin'=>true,
        ),

        '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>',
            ),
        ),

        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=mydatabase',
            'emulatePrepare' => true,
            'username' => 'sbuser',
            'password' => 'dbpassword',
            'charset' => 'utf8',
        ),

        'errorHandler'=>array(
            'errorAction'=>'site/error',
        ),
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, warning',
                ),
            ),
        ),
    ),

    // application-level parameters that can be accessed
    // using Yii::app()->params['paramName']
    'params'=>array(
        // this is used in contact page
        'adminEmail'=>'webmaster@example.com',
    ),
);

这里最重要的部分是:

        '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>',
            ),
        ),

这种配置的目的-和它的工作就像是-生成绝对URL像http://www.mydomain.dev/controller/action的控制器controller和行动action

我与这个问题.htaccess文件:如果我尝试打http://www.mydomain.dev/controller/action ,网址是找不到的。 但是,如果我打http://www.mydomain.dev/index.php/controller/action发现。 它看起来是.htacccess具有在所有(这是完全一样的,如果我删除.htaccess文件)没有影响。

:我究竟做错了什么?

Answer 1:

我认为你需要启用mod_rewrite的尝试:

a2enmod rewrite

然后,只需重新启动服务器。



Answer 2:

我找到了答案。 确保mod_rewrite的是活跃了我的其他网站我问自己 :得到了肯定我的.htaccess?

所以我想通过我的破坏.htaccess文件来强制500错误:

RewriteEngine on
# if a directory or a file exists, use it directly
TryToForceA500
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

并不会触发错误! 于是,我问自己-again-:为什么是不是被认可? 并检查了网站.conf文件 ,结果发现:

AllowOverride none

并更改为:

AllowOverride all

(这只是一个开发服务器,这样设置是为我好)

然后将文件被认可和工作!



文章来源: How can I hide the index.php file for yii in apache/.htaccess/mod_rewrite?