2011-09-12 58 views
0

我会简要通知您我在做什么以及在哪里需要您的帮助。使用htaccess重写网址

我正在建设博客托管网站。我完成了CMS,现在我正在做用户页面。

我的想法是创建.htaccess规则,以便每个用户和博客所有者都拥有自己的博客URL,如:XXX.bloghost.com,其中XXX是博客名称或博客所有者名称。

只是提一提,我会用2个参数中的URL所以这里有网址的范例:

XXX.bloghost.com -> www.bloghost.com/index.php?user=XXX 

XXX.bloghost.com/NEWS -> www.bloghost.com/index.php?user=XXX&category=NEWS 

XXX.bloghost.com/NEWS/SAMPLE -> www.bloghost.com/index.php?user=XXX&category=NEWS&post=SAMPLE 

这里是我当前的.htaccess文件(修订版):

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !www.bloghost.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).bloghost.com [NC] 
RewriteRule (.*) %2/$1 [L] 

RewriteRule (.+)/(.+)/(.+) blog.php?blog_id=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) blog.php?blog_id=$1&category=$2 [L,QSA] 
RewriteRule (.+) blog.php?blog_id=$1 [L,QSA] 


ErrorDocument 404 /error.php 

我会真的需要一些帮助。我尝试并遵循了几个教程,但没有运气。

另外,这个.htaccess是否可以阻止或重定向所有错误输入或不存在的URL到某个页面?

回答

3

首先,你必须配置子域通配符

ServerAlias www.domain.com domain.com *.domain.com 

而且可以肯定的是,配置通配符DNS了。不是使用这样的:

RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).domain.com [NC] 
RewriteRule (.*) %2/$1 [QSA] 

所以这个页面后http://some.domain.com/news会去http://www.domain.com/some/news 而不是过程的网址像往常一样(只是举例):

RewriteRule (.+)/(.+)/(.+) index.php?user=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) index.php?user=$1&category=$2 [L,QSA] 
// and so on 

但我认为,第二部分应用php路由系统处理。

+0

谢谢真我,以后我会尝试这一点,结果后在这里...干杯M8 – Ivan

+0

我只是想你sugestion,但没有运气 的URl www.bloghost.com/XXX/NEWS就像一个魅力,但像XXX.bloghost.com URL给我“服务器找不到”错误。这是我的.htaccess文件:(WWW) 选项+的FollowSymLinks 选项+指标 RewriteEngine叙述在 RewriteBase/ 的RewriteCond%{HTTP_HOST} www.otvorko.net $ [NC] 的RewriteCond%{HTTP_HOST} ^? (。*)/(。+)/(。+)博客。[[a-z0-9 - ] +)otvorko.net [NC] RewriteRule(。*)%2/$ 1 [L] RewriteRule RewriteRule(。+)/(。+)blog.php?blog_id = $ 1&category = $ 2 [L,QSA] RewriteRule(。+)博客。 php?blog_id = $ 1 [L,QSA] – Ivan

+0

您是否为通配符正确配置了DNS和Web服务器(Apache)? 'ServerAlias www.otvorko.net dotvorko.net * .otvorko.net'为apache和类似'* .otvorko.net一个111.222.33.44'在域dns记录? – atma

0

@atma已经处理了真正的重定向。只需要在.htaccess中进行错误处理的快速插件:

ErrorDocument 404 /error.php 

简单!任何404错误将被定向到bloghost.com/error.php。替换您的路径和页面/脚本以显示错误。