朋友网址在通配符子域htaccess,不工作

时间:2014-06-28 13:21:32

标签: .htaccess mod-rewrite

我已经拥有通配符子域名并且工作正常,现在我希望有朋友的URL来存放那个子域名中的内容,我的网站的结构是用户输入subdomain.maindomain.com和.htaccess重定向到

blogs/index.php?user=subdomain

其中blogs / index.php收到参数并显示正确的内容

现在我尝试制作像这样的网址功能

subdomain.maindoamin.com/24/title-of-content

然后.htaccess必须结果

blogs/index.php?id_content=24&title=title-of-content

我有下一个.htaccess

Options +FollowSymLinks

#this force to server the content always without www.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301]

#this is to pass the subdomain like param and show the right content of the user
RewriteCond %{HTTP_HOST} !^www\.misite\.com [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.misite\.com
RewriteRule ^(.*)$ blogs/index.php?url=%1 [QSA,L]

#the next line i can't make work to make nice url
RewriteRule ^/(.*)/(.*)$ blogs/index.php?idP=$1&name=$2 [L]

无效,因为我在index.php中制作

echo $_SERVER['REQUEST_URI'];

不显示idP = 24 show / 24 / title-of-content我需要$ _GET(idP)

我真的对这些东西有所了解我不是htaccess的专家,先谢谢大家。

1 个答案:

答案 0 :(得分:1)

有两个问题:

  1. RewriteRule的第一个参数与目录.htaccess的斜杠之后和查询字符串之前的所有内容匹配。如果您的www-root中有.htaccess,并且您获得了网址http://www.example.com/shiny/unicorns.php?are=shiny,则会与shiny/unicorns.php匹配。它永远不会以斜杠开头,因此^/永远不会匹配。
  2. 规则按顺序执行。如果您转到http://sub.example.com/10/unicorns,则第二条规则将首先匹配,并将请求重写为/blogs/index.php?url=10/unicorns。如果您删除了前导斜杠,则第三条规则将匹配,但通常您不会想要这样。您希望第三条规则仅匹配
  3. 您想要移动第三条规则,这是第二条规则。您希望使其更具体,仅与子域匹配。您还知道第一部分仅包含数字,因此请使用该知识阻止blogs/index.php匹配您的现在第二规则。您还需要阻止blogs / index.php匹配 now 第三条规则以防止它自身匹配。最后但并非最不重要的是,我从 now 第二条规则中删除了[L],因为第三条规则无论如何都会匹配。

    #the next line i can't make work to make nice url
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^([0-9]+)/([^/]+)$ blogs/index.php?idP=$1&name=$2
    
    #this is to pass the subdomain like param and show the right content of the user
    RewriteCond %{HTTP_HOST} !^www\.misite\.com [NC]
    RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.misite\.com
    RewriteCond %{REQUEST_URI} !/blogs/index\.php
    RewriteRule ^ blogs/index.php?url=%1 [QSA,L]