Apache 尝试使用重写规则作为用户名获取第一个匹配项
作为每个URL请求中的用户,我找不到获得斜杠后第一马赫数的方法,例如:Apache 尝试使用重写规则作为用户名获取第一个匹配项,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,作为每个URL请求中的用户,我找不到获得斜杠后第一马赫数的方法,例如: http://mysite.com/USER/modules/test/script.php to --> http://mysite.com/modules/test/script.php?u=USER 或 我不知道这是否可能,但我想一定是。 这是几次尝试后的.htaccess: Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^h
http://mysite.com/USER/modules/test/script.php
to --> http://mysite.com/modules/test/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是每个脚本的变量实路径
提前谢谢你,为我可怜的英式英语感到抱歉 第一个问题是
%{HTTP\u HOST}
变量包含主机:请求字段,它只是“mysite.com”,没有路径,没有协议。然后您需要在“用户”之后匹配并分组所有内容:
如果不需要外部重定向(例如,更改浏览器的位置字段),可以从重写标志中删除
,R
。我尝试了这个解决方案,它几乎可以正常工作,问题是如何始终以用户身份在script.php之前获取最后一个/path/。例如:mysite.com/user/script.php-->scipt.php?u=user GOOD!,但是mysite.com/user/modules/script.php-->script.php?u=modules坏!!还有mysite.com/modules/other/script.php-->script?u=其他也不好
@e2equiel添加了另一个条件以防止循环
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://mysite\.com/(.+?)$
RewriteRule ^.*$ http://mysite.com/$0?u=%1 [R,L]
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^([^/]+)/(.*)$ /$2?u=$1 [L,R]