使用htaccess的相当动态的Url结构

时间:2014-12-01 10:02:33

标签: php apache .htaccess mod-rewrite

我有一个网址结构http://mywebsite.com/trainer-profile.php?usr=DarwinDiaz&id=MTE4添加了htaccess代码并从链接中删除了 .php 扩展名。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^forums/ - [L,NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

现在我的网址结构为http://mywebsite.com/trainer-profile?usr=DarwinDiaz&id=MTE4。 我想将此网址转换为http://mywebsite.com/trainer-profile/DarwinDiaz。 我很喜欢htaccess。尝试了不同的htaccess代码,但没有奏效 提前致谢

2 个答案:

答案 0 :(得分:1)

我建议保持简单,就像这样:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /trainer-profile.php?usr=$1&id=$2 [L]

它会显示http://mywebsite.com/DarwinDiaz/MTE4这样的地址,其中包含usrid,但没有不必要的元素。

答案 1 :(得分:1)

您可以使用:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^forums/ - [L,NC]

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301,NE]

RewriteCond %{THE_REQUEST} \s/+(trainer-profile)\.php\?usr=([^\s&]+)&id=([^\s&]+) [NC]
RewriteRule ^ %1/%2/%3? [R=302,L,NE]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php\s [NC]
RewriteRule ^ %1 [R,L]

RewriteRule ^(trainer-profile)/(\w+)/(\w+)/?$ $1.php?use=$2&id=$3 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]