我需要从此隐蔽用户个人资料链接 http://example.com/site/index?user_id=sami.yaqoub
像Facebook一样 http://example.com/sami.yaqoub
我将配置文件的规则更改为除了。
的config.php
<?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>',
'<user:[a-zA-Z0-9_-]\w+>'=>'site/index',// here is the code
),
),
...
?>
它适用于所有不包含任何点的单词“。” ,所以我把它改成了这样的
'<user:[a-zA-Z0-9_-.]\w+>'=>'site/index',// return error
但也没有奏效。 除了这个公式之外,在这种情况下最好的方法是什么 Name.anything
提前致谢
答案 0 :(得分:1)
尝试在根文件夹中创建.htaccess文件并粘贴以下代码。
# if you have mod rewrite installed in your hosting space, you can enable pretty url for
# compressed css/js by uncommenting following lines
#RewriteEngine On
#Options FollowSymLinks
#RewriteRule ^packs/(\w+)\.(css|js) packs/jscsscomp.php?q=$1.$2
Options +FollowSymlinks
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L,QSA]
<Files .htaccess>
order allow,deny
deny from all
这可能也有帮助 - &gt; Yii how to get clean and pretty URL
答案 1 :(得分:1)
在正则表达式[a-zA-Z0-9_-.]\w+
中,您可以匹配.helloworld
但不匹配hello.world
之类的内容,因为您只在第一个位置匹配点.
字符。
你应该这样写:[a-zA-Z0-9_-.][\w.]+
。
我不确定,但Facebook可能不允许在第一个位置使用特殊字符,例如点或短划线.-
。在这种情况下,正确的答案是:[a-zA-Z0-9][\w.]+
或更短\w[\w.]+
请注意,正则表达式中的\w
与单词字符匹配。 \w
相当于[A-Za-z0-9_]
答案 2 :(得分:0)