Мне нужно скрывать ссылку на профиль пользователя из этого 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 .
Взгляните сюда, если вы хотите создать его самостоятельно или проверить уже сделанные плагины, которые делают это за вас.