【问题标题】:Help On Programming .htaccess to redirect to controller帮助编程.htaccess 重定向到控制器
【发布时间】:2011-06-26 09:22:41
【问题描述】:

我需要转换以下用户输入的网站网址,

var1 是用户设置的通配符,用于登录其帐户详细信息。

http://var1.domain.com/var2/var3
重定向到:
http://domain.com/master5.php?uid=var1&wid=var2&camid=var3

我需要的另一条规则是

var1.domain.com/var2/
重定向到:
domain.com/master5.php?uid=var1&wid=var2

如果可能的话,我也需要隐藏它们,这样用户实际上只能看到
var1.domain.com/var2/var3

【问题讨论】:

标签: php html .htaccess


【解决方案1】:

我不擅长 preg 表达,但你要找的是这样的东西

RewriteCond %{REQUEST_URI} .*\.domain\.com/.*/.*$ [NC]
RewriteRule ^(.*)\..*/(.*)/(.*)$ master5.php?uid=$1&wid=$2&camid=$3
RewriteCond %{REQUEST_URI} .*\.domain\.com/.*/$ [NC]
RewriteRule ^(.*)\..*/(.*)/$ master5.php?uid=$1&wid=$2

条件决定规则是否应该运行,规则说明如何将提供的 URL 转换为您希望执行的实际 URL。您可能希望尝试使用 http://regextester.com/ 之类的方式将 preg 精炼成您想要的精确状态。

编辑:请注意,您必须为 *.domain.com 而不是 www.domain.com 设置 DNS 条目,否则无论如何都不会将子域传递到您的服务器。

【讨论】:

  • 我让它工作了,但是当我尝试 haha​​.domain.com 时,子域变量没有通过:(
【解决方案2】:

我让它工作了,但是当我输入 http://something.domain.com 时,最后一条规则没有传递子域变量

选项 +FollowSymLinks 重写引擎开启

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$ [NC]

重写规则 ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ http://www.domain.com/master5.php?username=%2&$1&$2
重写规则 ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ http://www.domain.com/master5.php?username=%2&$1&$2

重写规则 ^$ http://www.domain.com/profile.php?username=%2 [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多