【发布时间】:2011-03-30 09:43:03
【问题描述】:
我使用 htaccess 和一组规则来控制我网站的不同页面。
- 如果用户访问我的主站点 (domain.com),而不使用 www,它 301 会重定向到 www.domain.com(用于 SEO 目的)
- 我使用通配符子域,因此如果用户访问 subdomain.domain.com,他们将查看决定为他们提供内容的特定 PHP 文件。
我的问题是我想扩展我的设置,以便能够使用相同的 url 名称。例如,如果我访问 subdomain.domain.com/feed,我会从主域规则中看到 pages/public_news_feed.php 文件,因为它共享“/feed”规则。我真正想要的是 pages/public_subdomain_blog_feed.php!
如何为 domain.com 和 subdomain.domain.com 设置特定规则?
提前致谢,祝您有美好的一天!
#AuthName "Restricted Area"
#AuthType Basic
#AuthUserFile /var/www/user/data/www/domain.com/.htpasswd
#require valid-user
Options +FollowSymLinks
RewriteEngine on
#force domain setup to use www
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
#redirect subdomains to controller
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^$ pages/public_subdomain_blog.php [L,QSA]
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(indsend-nyhed)$ pages/public_submit_news.php [L]
RewriteRule ^(modeblogs)$ pages/public_blogs.php [L]
RewriteRule ^(nyheder)$ pages/public_news.php [L]
RewriteRule ^(feed)$ pages/public_news_feed.php [L]
RewriteRule ^(nyheder)/([0-9]*)/(.*)$ pages/public_news_single.php?n_id=$2 [L]
RewriteRule ^(kontrolpanel)$ pages/private_account.php [L,QSA]
RewriteRule ^(kontrolpanel)/(logud)$ pages/private_logout.php [L]
## THESE RULES SHOULD ONLY BE SET IF THE USERS IS ON A SUBDOMAIN
RewriteRule ^([0-9]*)/(.*)$ pages/public_subdomain_blog_article.php?p_id=$1 [L]
RewriteRule ^(kategori)/([0-9]*)$ pages/public_subdomain_blog.php?c_id=$2 [L]
RewriteRule ^(arkiv)/([0-9]*)$ pages/public_subdomain_blog.php?a_id=$2 [L]
RewriteRule ^(feed)$ pages/public_subdomain_blog_feed.php [L]
【问题讨论】:
-
为什么要将访问者重定向到 www 网址?
-
因为到 domain.com 的传入链接没有为 www.domain.com 提供链接果汁。然而人们选择建立他们的链接,有或没有 www,然后保存所有的链接汁,最终转化为 PR。