Изменение шаблона URL для принятия имени пользователя, такого как Facebook
Мне нужно скрыть ссылку на профиль пользователя с этого 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 ответа
В тебе регулярное выражение [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