-1

所以我有一个 domain.com,我想让所有子域重定向到我正在制作的博客系统

所以 domain.com - 主网站(不是博客,由 index.php 加载)anything.domain.com - 博客网站 -> 所有内容都重定向到主目录中的 blogs.php(与 index.php 相同)

现在要完成这个我使用:

RewriteCond %{HTTP_HOST} ^([a-z0-9_]+\.)domain.com$ [NC]
RewriteRule (.*) blogs.php [QSA,L]

或多或少它有效(我使用漂亮的网址 - 获取从 $_SERVER[request_uri] 中提取的实际 $_GET 表

但是,我最需要的是能够将文件链接到现有目录,例如: http : //someblog.domain.com/js/somefile.js 现在它正在尝试使用 /js/somefile 加载 blogs.php。 js作为参数

我试图补充:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

但有了它 - 它总是打开主网站(因为每个子域都被重定向到主域并充当现有的目录/文件)

所以总结一下:

RewriteCond %{HTTP_HOST} ^[*]+\.domain.com (xxx)! [NC] 
//in place of xxx - somehow check if there is anything after adderess
RewriteCond %{REQUEST_FILENAME} !-f  // and check if it exists
RewriteCond %{REQUEST_FILENAME} !-d  //

如果存在 - 服务器它,如果不遵循旧的,默默地将请求转换为 blogs.php:

RewriteCond %{HTTP_HOST} ^([a-z0-9_]+\.)gragieldowa.pl$ [NC]

RewriteRule (.*) blogs.php [QSA,L]

提前感谢您的帮助:)

4

1 回答 1

0

您可以尝试在规则的开头添加传递,这样任何/index.php/blogs.php/都可以通过并且不会发生重写。然后您可以进行域/子域检查以及 !-f 和 !-d 检查。

# handle root request
RewriteCond %{HTTP_HOST} !^(www\.)?domain.com$ [NC]
RewriteRule ^/?$ blogs.php [L]

# redirect subdomains to blog.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^(www\.)?domain.com$ [NC]
RewriteRule ^ blogs.php [L]
于 2012-10-22T18:01:34.283 回答