0

我找不到在每个 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是每个脚本的变量真实路径。

在此先感谢并为我糟糕的英语感到抱歉!

4

1 回答 1

1

第一个问题是该%{HTTP_HOST}变量包含Host: request 字段,它只是“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如果您不想要外部重定向(例如更改浏览器的位置字段),您可以从重写标志中删除。

于 2013-08-20T20:33:20.007 回答