Yii2使用.htaccess隐藏URL中的Web部件

时间:2015-03-11 11:41:12

标签: apache .htaccess yii2

我在根文件夹中创建了一个.htaccess文件,其中包含以下代码:

-RewriteEngine On
Add a comment to this line
-RewriteCond %{REQUEST_URI} !^/web
-RewriteRule ^/?([^/]+)$ /web/$1 [L]

但它没有按预期工作。我在web文件夹中也有一个.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

我做错了什么,这里?

3 个答案:

答案 0 :(得分:2)

加入.htaccess

RewriteRule . /web/index.php

RewriteRule . /basic/web/index.php

EDIT。 我找到更好的解决方案放入.htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$ 
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]

domain.com更改为您的域名。

答案 1 :(得分:1)

应该更改AppAsset public $ css路径

答案 2 :(得分:0)

在网络文件夹之外添加 .htaccess

AddDefaultCharset UTF-8

Options +FollowSymLinks
IndexIgnore */*
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

config / web.php

中添加以下内容
'urlManager' => array(
        'class' => 'yii\web\UrlManager',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => array(
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
    ),

index.php 从网络文件夹内移到外面并更改这3行

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/web.php');

这对我来说在开发和生产方面都很有用。