Php Yii2自定义url管理。获取400错误
好吧,PHP时代 我的客户希望我使用Yii2作为他的项目的框架 我把它安装好并运行起来。没问题。我通过composer使用了高级模板 将我的web根目录设置为/frontend/web等 现在,我想使用这个url格式 website.com/messages/或website.com/messages/tom。。。等等 现在的安装方式是显示website.com/index.php?r=messages/index 我找到了这个文档 但我似乎不能把它弄清楚 这是我的步骤 我将apache服务器配置为指向/usr/www/payroll/frontend/web/ 我在我的web文件夹中添加了一个包含此内容的.htaccess文件Php Yii2自定义url管理。获取400错误,php,apache,.htaccess,yii-components,yii2,Php,Apache,.htaccess,Yii Components,Yii2,好吧,PHP时代 我的客户希望我使用Yii2作为他的项目的框架 我把它安装好并运行起来。没问题。我通过composer使用了高级模板 将我的web根目录设置为/frontend/web等 现在,我想使用这个url格式 website.com/messages/或website.com/messages/tom。。。等等 现在的安装方式是显示website.com/index.php?r=messages/index 我找到了这个文档 但我似乎不能把它弄清楚 这是我的步骤 我将apache服务器
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,您可以看到它将/site/index添加到url。(如果url组件不活动,它只添加/index.php?site/index)
因此,显然有一个对url的修改(通过UrlManager),但我得到404错误
我这里的点子快用完了。我不熟悉Php、Apache和Yii2。任何帮助,非常感谢
如果您想这样使用
http://domain.com/controller_name/action_name
,您只需在配置文件中启用漂亮的url:
'components'=>[
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => 'false'
],
],
现在,您可以随意使用URL`website.com/messages/或website.com/messages/tom
如果您想在url中使用查询字符串,这就是Yii 2
website.com/message?id=12的工作方式。好的,下面是解决方案
在Apache的最新版本(从2.3.9开始)中,AllowOverride默认设置为NONE。以前的版本已将AllowOverride设置为ALL
Yii2假设AllowOverride将设置为ALL
如果你想在Yii论坛上阅读全文,这里是链接
感谢您的帮助和信息 要在Yii 2.0上运行漂亮的URL,您需要两件事:
1:编辑/frontend/config/main.php
(或者在您的情况下编辑适当的主配置)并添加:
'components'=>[
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
2:在您的WEB根文件夹中添加.htaccess文件。
在yii 2.0 advanced中,这不是项目根目录,而是:
/frontend/web
.htaccess示例:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
只需将'showScriptName'=>'false'更改为'showScriptName'=>false,它就可以运行了对于Yii2 basic,我刚刚将下面的代码添加到/myappfolder/config/web.php中:
“urlManager”=>[
'class'=>'yii\web\UrlManager'
“enablePrettyUrl”=>true
'showScriptName'=>false
]
另外,在/myappfolder/web/中添加了.htaccess:
重新启动发动机
重写cond%{REQUEST_FILENAME}-f
重写cond%{REQUEST_FILENAME}-d
重写规则。index.php
这对我很有效。希望这能帮助其他有同样问题的人。:) 我不明白任何站点页面是否有效?如果我将组件代码存根添加到配置文件中,它就不会起作用。无论我做什么,它都不会显示website.com/controller/action。。。。如果我将组件代码添加到我的配置中,它甚至不会像默认情况下那样工作。。。意思是,website.com/index.php?r=controller/action'showScriptName'=>'false'应该有'showScriptName'=>false抱歉,这里输入的是错误的,而不是代码。在我的代码中,它显示false而不是false。如果有人使用Yii2基本模板,则主配置文件是basic/config/web.php
。谢谢。@GastónSánchez你是说项目根目录/config/web.php
?'showScriptName'=>'false'应该是'showScriptName'=>false