用于缩短URL的htaccess规则

时间:2012-10-29 03:17:28

标签: .htaccess

我正在尝试使用重写规则来屏蔽和使用URL#1

访问URL#2
URL#1 http://www.domain.com/user/username/send
URL#2 http://www.domain.com/user.php?user=username&action=send

URL#1 http://www.domain.com/user/username/receive
URL#2 http://www.domain.com/user.php?user=username&action=receive

只有两个变量是用户名和发送/接收

2 个答案:

答案 0 :(得分:1)

您需要做的第一件事是将内容中的所有链接从包含用户操作查询字符串的链接更改为具有清除的链接查找网址(例如http://www.domain.com/user/username/send)。然后,您需要将其添加到文档根目录中的htaccess文件(您的webroot,其中http://www.domain.com/指向):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?user/([^/]+)/([^/]+)/?$ /user.php?user=$1&action=$2 [L,QSA]

您的网站之外的链接(例如谷歌)可能仍指向包含查询字符串的网址。如果是这样,您需要从外部301将对它们的请求重定向到看起来干净的URL:

RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /user\.php\?user=([^&]+)&action=([^&\ ]+)
RewriteRule ^ /user/%2/%3? [L,R=301]

答案 1 :(得分:1)

尝试此规则:

RewriteEngine On
RewriteRule ^user\/([a-zA-Z0-9_-])\/([a-zA-Z])$ http://www.domain.com/user.php?user=$1&action=$2 [L,R=Permanent]