好吧,PHP时代。
我的客户希望我使用Yii2作为他的项目的框架。
我得到了它并且正在运行。没问题。我通过作曲家使用了高级模板。
将我的网络根设置为/ frontend / web等
现在,我想使用这个网址格式
website.com/messages/或website.com/messages/tom ...等。
现在方式是设置显示 website.com/index.php?r=messages/index ...
我找到了这份文件......
https://github.com/yiisoft/yii2/blob/master/docs/guide/url.md
但我似乎无法直截了当。
以下是我的步骤......
我将我的apache服务器配置为指向/ usr / www / payroll / frontend / 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
我还在路线中添加了组件'urlManager'。它似乎抓住了请求并修改了它。
'components'=>[
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => 'false'
],
],
例如,如果我输入website.com,您可以看到它将ur / site / index添加到网址。 (没有激活url组件,只需添加/index.php?site/index)
所以,显然有一个修改到url(通过UrlManager),但我得到404错误
我的想法已经不多了。我是Php,Apache和Yii2的新手。任何帮助,非常感谢。
由于
答案 0 :(得分:16)
要在Yii 2.0上创建漂亮的URL,您需要做两件事:
1:编辑/frontend/config/main.php
(或您的案例中的相应主配置)并添加:
'components'=>[
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
2:在您的WEB ROOT 文件夹中添加.htaccess文件。
在yii 2.0 advanced中,这是 NOT 项目根目录,而是:
/frontend/web
.htaccess示例:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
答案 1 :(得分:5)
只需更改' showScriptName' => '假' to' showScriptName' =>是的,它会起作用
答案 2 :(得分:0)
如果您想使用此http://domain.com/controller_name/action_name
,则只需在配置文件中启用漂亮的网址:
'components'=>[
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => 'false'
],
],
现在您可以使用网址,网址为:http://www.messages/或website.com/messages/tom。
如果你想在你的网址中使用查询字符串,这就是现在在Yii 2 website.com/message?id=12
答案 3 :(得分:0)
好的,这是解决方案。
在Apache的最新版本(从2.3.9开始)中,默认情况下AllowOverride设置为NONE。以前的版本将AllowOverride设置为ALL。
Yii2假设AllowOverride将设置为ALL。
如果您想在Yii论坛阅读整个主题,请点击链接
感谢您的帮助和留言!
答案 4 :(得分:0)
对于Yii2 basic,我刚将以下代码添加到/myappfolder/config/web.php:
' urlManager' => [
'类' => ' YII \网络\ UrlManager',
' enablePrettyUrl' =>真,
' showScriptName' = GT;假,
另外,在/ myappfolder / web /中添加.htaccess:
上的RewriteEngine
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule。的index.php
这适合我。希望这有助于其他有同样问题的人。 :)