标签: yii-url-manager

在Yii2中启用干净的URL

如何在Yii2中启用干净的URL.我想删除index.php和'?' 来自url参数.需要在Yii2中编辑哪个部分?

clean-urls yii2 yii-url-manager

63
推荐指数
4
解决办法
8万
查看次数

使用干净的URL在yii2中的超链接中传递多个参数,Html :: a()不会生成干净的URL

我想通过生成中提到的方法中的超链接 http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks这样

 Html::a('<b>Register</b>', 
    ['story/create', array('id' =>39,'usr'=>'11')], 
    ['class' => 'profile-link'])
Run Code Online (Sandbox Code Playgroud)

我想得到网址 story/create/id/39/usr/11

但它正在产生

story/create?1%5Bid%5D=39&1%5Busr%5D=1
Run Code Online (Sandbox Code Playgroud)

我启用了yii2的干净网址功能

  'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
        ], also.
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

clean-urls yii2 yii-url-manager

10
推荐指数
1
解决办法
2万
查看次数

urlManager规则的可选参数

我用过,Yii::app()->request->getParam()所以我可以有一个友好的网址/listings/amenities/1.

我的控制器上有3个动作来获取参数$property_id = Yii::app()->request->getParam('property_id').

这两个行动amenitiesmeals工作正常,但在最后一个动作photos时,VAR property_id有一个空值.

我尝试删除照片规则上的第二个参数,一切正常.如何在不删除第二个参数的情况下解决这个问题gallery_id

以下是urlmanager规则:

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'rules'=>array(
                'listings/amenities/<property_id>'=>'listings/amenities',
                'listings/meals/<property_id>'=>'listings/meals',
                'listings/photos/<property_id>/<gallery_id>'=>'listings/photos',
             ),
         ),
Run Code Online (Sandbox Code Playgroud)

[编辑]我认为解决方案涉及如何正确设置可选参数的规则来处理请求listings/photos/1listings/photos/1/2.添加OR符号无法解决问题.

'listings/photos/<property_id>/<gallery_id>'=>'listings/photos'
Run Code Online (Sandbox Code Playgroud)

parameters yii yii-url-manager

8
推荐指数
1
解决办法
3659
查看次数

YII 2获取网站URL

我的应用程序部署在localhost/upload上.

我使用以下代码生成相对URL.

 Url::to('@web/my_controller/action'); // it returns /upload/my_controller/action
Run Code Online (Sandbox Code Playgroud)

但是,我需要这样的完整URL:http:// localhost/upload/my_controller/action.

我错过了什么吗?

yii2 yii-url-manager

8
推荐指数
1
解决办法
2万
查看次数

在Yii的SEO友好网址

我需要http://example.com/post/view/id/1网址的规则,该规则将显示为http://example.com/post/post_title.而不是身份证号码我想显示帖子名称或标题.

我的配置如下所示:

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

php clean-urls yii yii-url-manager

6
推荐指数
1
解决办法
3768
查看次数

Yii检查是否主页

在Yii中是否有buildin方法或属性来检查页面是否是主页?

我知道我可以使用这样的东西:

$controller = Yii::app()->getController();
$isHome = $controller->getAction()->getId() === 'index' ? true : false;
Run Code Online (Sandbox Code Playgroud)

或者把它放在主控制器的方法中,但我正在寻找更清洁的东西.

谢谢.

php yii yii-url-manager

6
推荐指数
2
解决办法
1万
查看次数

如何使用/ web以外的Web根部署yii2

我正在研究yii2项目,并希望将其部署到apache服务器,其中整个网站都应该位于/ public_html目录中,并且/ public_html是该主机的Web根目录。问题在于yii2期望Web根目录为/ web,并且期望大多数站点层次结构都位于/ web目录之外。

我希望不必将webroot更改为/ public_html / web,对于将来的项目,这可能不是一个选择。因此,有没有办法将整个网站层次结构放置在/ public_html中,并且仍然使网站正常工作?

我尝试创建具有以下内容的/public_html/.htaccess文件:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !web/
    RewriteRule (.*) /web/$1 [L]
Run Code Online (Sandbox Code Playgroud)

首先,这似乎正常工作。/ public_html / web之外的任何内容都无法访问,并且/ web子目录中的文件(例如/web/js/signup.js)可以通过url http://localhost/js/signup.js进行访问,但这引起了我的路由规则(是在本地系统上设置的,我可以将Web根目录指向/ web)不再被识别。

因此,我可以选择.htaccess路由的替代方案,或者对如何修改路由规则以使.htaccess路由起作用的建议感到满意。

编辑澄清

我有一个托管提供商,其网络根为〜/ public_html。Yii有文档说明您可以将www重命名为public_html,并将通常位于/ www之外的所有内容放在〜中,以及Linux通常放置在〜中的各种点文件和用户文档。我希望将所有与站点相关的目录放在一起(在webroot下)。

或者,可以使用两目录结构,例如以下结构:

~/
 |--- (Various dotfiles and subdirectories unrelated to the web site)
 |--- yii - Contains all subfolders that should be outside of the web root
      |--- commands
      |--- config
      |--- controllers 
      |--- (etc...)
 |--- public_html - Contains everything that can be within the web root.
      |--- …
Run Code Online (Sandbox Code Playgroud)

php .htaccess yii2 yii-url-manager

5
推荐指数
1
解决办法
3839
查看次数

设置未知属性:yii\web\UrlRule::GET

我有这个错误,我不知道解决。

我用 Yii2 创建了一个 api 端点。几天前端点正在工作,但现在它没有并引发此错误:

{
name: "Unknown Property",
message: "Setting unknown property: yii\web\UrlRule::GET index",
code: 0,
type: "yii\base\UnknownPropertyException",
file: "C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\base\Object.php",
line: 161,
stack-trace: [
"#0 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\BaseYii.php(521): yii\base\Object->__set('GET index', 'index')",
"#1 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(Object(yii\web\UrlRule), Array)",
"#2 [internal function]: yii\base\Object->__construct(Array)",
"#3 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\di\Container.php(374): ReflectionClass->newInstanceArgs(Array)",
"#4 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\di\Container.php(153): yii\di\Container->build('yii\\web\\UrlRule', Array, Array)",
"#5 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\\web\\UrlRule', Array, Array)",
"#6 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\web\UrlManager.php(212): yii\BaseYii::createObject(Array)",
"#7 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\web\UrlManager.php(154): yii\web\UrlManager->buildRules(Array)",
"#8 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\base\Object.php(107): yii\web\UrlManager->init()",
"#9 [internal function]: yii\base\Object->__construct(Array)",
"#10 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\di\Container.php(374): ReflectionClass->newInstanceArgs(Array)",
"#11 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\di\Container.php(153): yii\di\Container->build('yii\\web\\UrlMana...', Array, Array)",
"#12 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\\web\\UrlMana...', Array, Array)",
"#13 C:\xampp\htdocs\forkandjoin\vendor\yiisoft\yii2\di\ServiceLocator.php(133): …
Run Code Online (Sandbox Code Playgroud)

api rest composer-php yii2 yii-url-manager

5
推荐指数
1
解决办法
5633
查看次数

yii2 urlManager enablePrettyUrl无效

在Yii2中,我无法启用漂亮的网址.

我的配置:

    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ],
Run Code Online (Sandbox Code Playgroud)

我的.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
Run Code Online (Sandbox Code Playgroud)

我的剧本:

echo 'enablePrettyUrl: ';
echo Yii::$app->urlManager->enablePrettyUrl ? 'true ' : 'false';

echo '<br>';
echo 'enableStrictParsing: ';
echo Yii::$app->urlManager->enableStrictParsing ? 'true ' : 'false';

echo '<br>';
echo 'showScriptName: ';
echo Yii::$app->urlManager->showScriptName ? 'true ' : 'false';

echo Url::to(['/book/read', 't' => …
Run Code Online (Sandbox Code Playgroud)

.htaccess yii2 yii-url-manager

4
推荐指数
1
解决办法
6055
查看次数

如何在yii2中覆盖或编辑供应商目录的代码?

我需要在vendor/yiisoft/yii2/web/urlmanager.php中做一些更改才能使我的url_alias工作!我需要知道我是否可以直接更改此文件,或者是否有任何方法来覆盖此文件?

php yii2 yii-url-manager yii2-advanced-app

4
推荐指数
1
解决办法
715
查看次数