0

我正在尝试使用重写规则来使用 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

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

4

2 回答 2

1

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

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

您的网站之外的链接(例如在 google 上)可能仍然指向带有查询字符串的 URL。如果是这样,您需要在外部 301 将它们的请求重定向到看起来干净的 URL:

RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /user\.php\?user=([^&]+)&action=([^&\ ]+)
RewriteRule ^ /user/%2/%3? [L,R=301]
于 2012-10-29T03:23:43.740 回答
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]
于 2012-10-29T03:35:23.950 回答