URL以特定格式重写规则

时间:2017-01-05 08:58:27

标签: php .htaccess mod-rewrite url-rewriting

我已经为URL写了一个.htaccess文件来重写,但它有一些错误,因为它没有提供所需的输出,需要一些专家的意见/结果才能做到正确。

以下是我要重写的网址

http://theyouthtalent.com/user-wall.php?User=dillagiary&Talent=T.V

应重写为

http://theyouthtalent.com/T.V/dillagiary

我现有的.htaccess文件有以下行

RewriteEngine On

RewriteCond %{THE_REQUEST} /user_wall\.php [NC]
RewriteCond %{QUERY_STRING} ^User=(\w+)&Talent=(\w+)$ [NC]
RewriteRule ^user_wall\.php$ /%2/%1? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)/(\w+)/?$ user_wall.php?User=$2&Talent=$1 [L,QSA]
  

重要的一点是,我想首先使用Talent值,然后是用户名

1 个答案:

答案 0 :(得分:0)

http://theyouthtalent.com/user-wall.php?User=dillagiary&Talent=T.V

Talent查询字符串参数值包含一个点(.),但速记字符类\w(字符)不包含点。因此,您需要在模式中包含一个点。即。将相关的(\w+)模式更改为([\w.]+)

此外,请求网址包含连字符(-),而不是下划线(_)。

例如:

RewriteCond %{THE_REQUEST} /user-wall\.php [NC]
RewriteCond %{QUERY_STRING} ^User=(\w+)&Talent=([\w.]+)$ [NC]
RewriteRule ^user_wall\.php$ /%2/%1? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w.]+)/(\w+)/?$ user_wall.php?User=$2&Talent=$1 [L,QSA]

\w字符类本身等同于:[A-Za-z0-9_]