Php 我想在url中使用用户名作为页面地址
例如,我想直接访问用户名页面,如下所示:Php 我想在url中使用用户名作为页面地址,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,例如,我想直接访问用户名页面,如下所示: mysite.com/username 重定向到我的SiteController。它被命名,并由服务器通过某些服务器模块提供。例如,apache中的mod_rewrite 配置后,它将从URL获取所需的参数,并通过QUERY_STRING环境变量以通常的方式将它们发送到脚本 您不应该更改php代码。请在.htaccess中尝试此操作 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d Rewrite
mysite.com/username
重定向到我的SiteController。它被命名,并由服务器通过某些服务器模块提供。例如,apache中的mod_rewrite
配置后,它将从URL获取所需的参数,并通过QUERY_STRING环境变量以通常的方式将它们发送到脚本
您不应该更改php代码。请在.htaccess中尝试此操作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /SiteControllet.php?id=$1 [L]
这实际上将作为Sitecontroller.php?用户名=somename 您需要使用user.php来查找数据 当然,首先需要启用 修改 在apache配置中 Umcomment配置文件中的此行:
LoadModule rewrite_module modules/mod_rewrite.s
请记住,.htaccess应该在根文件夹中。创建一个名为“.htaccess”的文件,并在该文件中写入以下内容
RewriteEngine On
RewriteCond %{filename} !-d
RewriteCond %{filename} !-f
RewriteRule ^([^/]*)$ /user.php?id=$1 [L]
希望有帮助!
:D
或者,对于更高级的选项,您可以搜索“url重写”
另外,我不是以英语为母语的人。有几种解决方法,但我认为有一种更适合我的方法 首先,您需要web文件夹中的默认.htacces文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
然后,您需要在common/config/main或frontend/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
],
],
],
您可能还发现以下链接很有用:
编辑:
哦,等等!你想让所有的站点/操作都在你的URL.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>',
],
],
“组件”=>[
“urlManager”=>[
'class'=>'yii\web\UrlManager',
//禁用index.php
'showScriptName'=>false,
//禁用r=路由
“enablePrettyUrl”=>true,
“规则”=>[
“/”=>“/视图”,
'//' => '/',
'/' => '/',
''=>'站点/',
],
],
或:
“组件”=>[
“urlManager”=>[
'class'=>'yii\web\UrlManager',
//禁用index.php
'showScriptName'=>false,
//禁用r=路由
“enablePrettyUrl”=>true,
“规则”=>[
“/”=>“/视图”,
'//' => '/',
'/' => '/',
'要求向上投票是站不住脚的。请注意这一点。谢谢,当我使用site.com/profile/username时,它是有效的,但我想要site.com/usernameOkey,所以原始url是/site/profile/username?是的,按照“编辑”之前的步骤操作'我试过了,效果很好。'=>'site/profile'
在您的urlManager中,以及siteControllerI中的actionProfile我解决了,我使用了这个'restaurant/'=>'site/'。谢谢Jorgen
'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>',
],
],