漂亮 url 不工作

pretty url not working

下面是我的main.php

 'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [  '<controller:\w+>/<id:\d+>' => '<controller>/view',
                       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                       '<controller:\w+>/<action:\w+>' => '<controller>/<action>',               
                    ],
        ],

我启用了漂亮的 url(我认为),我收到了很多 404,例如

192.168.1.3/~user/urshow/frontend/web/movies/movies_all如果像这样就好了192.168.1.3/~user/urshow/frontend/web/index.php?r=movies/movies_all 并且没有任何链接可以正常工作,而这些链接以前是完美的。

我认为这会奏效。 . .

192.168.1.3/~user/urshow/frontend/web/index.php/movies/movies_all

将此代码放入 common/config/main.php

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [  '<controller:\w+>/<id:\d+>' => '<controller>/view',
                   '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                   '<controller:\w+>/<action:\w+>' => '<controller>/<action>',               
                ],
    ],

试试这个... 在您的根文件夹中创建 .htaccess 文件 并添加以下代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond  !^(index\.php)
RewriteRule ^(.+)$ index.php? [PT,L,QSA]

可能对你有帮助..

创建一个 .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

现在在您的 web.php 组件部分添加以下内容:

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

这绝对有效。

我的 .htaccess 文件位于我项目的子文件夹中

RewriteEngine on
RewriteBase /~user/urshow/frontend/web/
# 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

我的 main.php 文件里面的配置

 'urlManager' => [
        '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>',
    ),
    ],

这对我有用。

在路由器配置中添加以下语句以使 html5 为真。

$locationProvider.html5Mode({
        enabled: true,
        requireBase: false
    });

然后在 web.config

上添加设置
  <system.webServer>
    <rewrite>
      <rules>
        <clear />
        <rule name="AngularJS" enabled="true" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>