我是Yii框架的新手。我在配置文件中取消注释了url管理器并获得了这样的url方案:
http://localhost/mysite/index.php/displayAll
我不希望url中的index.php。所以我想要一个像这样的网址
http://localhost/mysite/displayAll
要做到这一点,我该怎么办。我确实玩过网址管理员和一些htaccess,但没有什么进展顺利。
请帮忙
答案 0 :(得分:9)
在你的.htaccess中你应该有这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
然后你必须将urlManager组件添加到主配置文件中:
array(
......
'components'=>array(
......
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'pattern1'=>'route1',
'pattern2'=>'route2',
'pattern3'=>'route3',
),
),
),
);
请注意'showScriptName'=> false ,这会隐藏生成的网址中的'index.php'。
要查找有关Yii的URL Manager的所有信息,请在Yii的文档中查看此主题: http://www.yiiframework.com/doc/guide/1.1/en/topics.url
答案 1 :(得分:3)
尝试:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?mysite/(.*)$ /mysite/index.php/$1 [L]
答案 2 :(得分:0)
在httpd.conf中查找,
LoadModule rewrite_module modules/mod_rewrite.so
(如果尚未删除,则从行的开头删除#。)
OR
In wamp click on wampserver-> Apache -> Apache Modules and enable rewrite_module.
在index.php所在的目录中创建.htaccess,并粘贴以下代码:
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
在protected / config / main.php
中 'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
如果仍然没有获得干净的网址,请转到虚拟主机配置文件“httpd-vhosts”,如果您正在使用它,并粘贴到您的配置中,
<Directory "C:/wamp/www">
AllowOverride All
</Directory>
答案 3 :(得分:0)
在IIS 7,IIS 7.5,IIS 8,IIS 8.5,IIS 10
上确保您已安装网址重写模块。可在此处找到:http://www.iis.net/downloads/microsoft/url-rewrite
从 config / main.php 或 config / web.php
中删除评论 'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
在网络目录basic / web / web.config 中创建新文件,然后添加 system.webServer
<directoryBrowse enabled="false" />
<rewrite>
<rules>
<rule name="Hide Yii Index" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>