所以我有一个domain.com,我想让所有子域名重定向到我正在制作的博客系统
so 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 现在它试图加载blogs.php和/js/somefile.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]
提前感谢任何帮助:)
答案 0 :(得分:1)
您可以尝试在规则开头添加传递,以便传递/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]