尝试使用RewriteRule将第一个匹配作为用户名

时间:2013-08-20 20:21:36

标签: apache .htaccess mod-rewrite

我无法找到在每个URL请求中以斜杠作为用户获取第一个马赫的方法,例如:

http://mysite.com/USER/modules/test/script.php
to --> http://mysite.com/modules/test/script.php?u=USER

http://mysite.com/USER/modules/test/path/to/other/script.php
to http://mysite.com/modules/test/path/to/other/script.php?u=USER

我不知道是否有可能,但我认为一定是这样。 几次尝试后,这是我的.htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://mysite\.com/(.+?)$
RewriteRule ^.*$ http://mysite.com/$0?u=%1 [R,L]

%1 是第一个斜杠后的用户名, $ 0 是每个脚本的变量实际路径。

提前致谢,抱歉我的英语很差!

1 个答案:

答案 0 :(得分:1)

第一个问题是%{HTTP_HOST}变量包含主机:请求字段,它只是“mysite.com”,没有路径,没有协议。然后你需要在“USER”之后匹配并分组所有内容:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^([^/]+)/(.*)$ /$2?u=$1 [L,R]

如果您不想要外部重定向(例如更改浏览器的位置字段),则可以从重写标记中删除,R