mod_rewrite:url重写同时加上子域名(通配符)重写

发布于 2024-08-19 20:33:12 字数 863 浏览 6 评论 0原文

我的 .htaccess 文件中有两条用于 URL 重写的规则:

  1. 用于子域重写:xxx.domain.com 在内部重定向到 file.php?项目=xxx

    RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
    
    RewriteRule ^$ /file.php?item=%2 [QSA,nc]
    
  2. 普通重写:

    RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ file.php?item=$1 [L] 
    

我需要实现的是编写第三条规则,它将结合这两个规则而不与它们发生冲突。也就是说,在这行下面(或上面)我需要有类似的东西:

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC]

RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc]

这样 http://xxx.domain .com/yyy 将被重定向到 anotherfile.php?item1=xxx&item2=yyy

任何可行的想法,或者正确的方法是什么?

I have two rules in my .htaccess file for url rewriting:

  1. for subdomain rewriting: xxx.domain.com is internally redirected to file.php?item=xxx

    RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
    
    RewriteRule ^$ /file.php?item=%2 [QSA,nc]
    
  2. ordinary rewriting:

    RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ file.php?item=$1 [L] 
    

What i need to achieve is writing a third rule that will combine these two rules without being in conflict with them. Namely, below (or above) this lines i need to have something like that:

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC]

RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc]

so that http://xxx.domain.com/yyy will be redirected to anotherfile.php?item1=xxx&item2=yyy

any ideas that will work, or what is the correct way of it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷路的信 2024-08-26 20:33:12

尝试此规则:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.example\.com$ [NC]
RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ /file.php?item1=%2&item2=$1 [QSA]

它使用第一个规则的条件和第二个规则的 URL 路径模式。

Try this rule:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.example\.com$ [NC]
RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ /file.php?item1=%2&item2=$1 [QSA]

It uses conditions of the first rule and URL path pattern of the second.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文