例如,我想直接访问用户名页面,如下所示:
mysite.com/username
重定向到我的SiteController。
答案 0 :(得分:2)
它名为URL rewriting,由服务器通过某个服务器模块提供。例如,apache中的mod_rewrite
。
配置完成后,它将从URL获取所需的参数,并通过QUERY_STRING环境变量以通常的方式将它们发送到您的脚本。
你不应该改变你的PHP代码。
答案 1 :(得分:2)
在.htaccess
中试试RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /SiteControllet.php?id=$1 [L]
这实际上将作为
工作
Sitecontroller.php?用户名= somename
您需要使用user.php来查找数据。
首先,您需要启用 mod_rewrite的 在apache配置中。
在配置文件中取消此行:
LoadModule rewrite_module modules/mod_rewrite.s
请记住,.htaccess应该在根文件夹中。
答案 2 :(得分:2)
有几种解决方案,但我认为有更类似Yii的方法。
首先,您需要在您的网络文件夹中使用默认的.htacces文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
然后你需要你的common / config / main或你的前端/ common / main中的urlManager。
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => [
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<username:\w+>' => 'site/profile' // This will handle your usernames
],
],
],
最后是站点控制器中的actionProfile($ username)
public function actionProfile($username) {
$model = \common\models\User::find()->where(['username' => $username])->one();
die($model->username);
}
您可能还会发现这些链接很有用:
http://www.yiiframework.com/doc-2.0/yii-behaviors-sluggablebehavior.html http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html
修改强> 等一下!您希望所有站点/操作都能在yoururl.com/actions上运行吗?
然后你需要
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => [
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<alias:index|all|your|actions|here>' => 'site/<alias>',
],
],
或者:
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => [
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<action:\w+' => 'site/<action>',
],
],
答案 3 :(得分:0)
创建一个名为&#39; .htaccess&#39;的文件并在文件中写下以下内容
RewriteEngine On
RewriteCond %{filename} !-d
RewriteCond %{filename} !-f
RewriteRule ^([^/]*)$ /user.php?id=$1 [L]
希望它有所帮助!
:d
或者对于更高级的选项,您可以搜索&#34; url-rewriting&#34;
P.S。我不是母语为英语的人。