更改网址格式以接受像facebook这样的用户名

时间:2015-06-08 09:17:53

标签: php regex yii yii-url-manager

我需要从此隐蔽用户个人资料链接 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

提前致谢

3 个答案:

答案 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)

我相信你想要做的是创建一个Slug

如果您想自己创建它,请查看here或查看已为您制作的plugins