Мне нужно скрывать ссылку на профиль пользователя из этого 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
заранее спасибо
В regexp [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_]
Попробуйте создать файл .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
Это может помочь также -> Yii, как получить чистый и красивый URL-адрес
Я считаю, что вы хотите создать Slug
.
Взгляните сюда, если вы хотите создать его самостоятельно или проверить уже сделанные плагины, которые делают это за вас.