【问题标题】:.htaccess rewrite multiple urls without redirects.htaccess 重写多个 url 而无需重定向
【发布时间】:2013-04-17 16:38:05
【问题描述】:

好的,所以我有这些 demo1.domain.net、demo2.domain.net、demo3.domain.net 之类的 url,并且都需要像这个例子一样显示子文件夹的内容 demo1.domain.net 将显示 domain.net/websites/demo1 的内容 我需要以一种方式将 $whatever.domain.net 等所有域都放入 domain.net/websites/$whatever.domain.net,我已经启用了通配符 dns,但我似乎无法解决它,请保留请记住,我不希望它重定向。

这是我尝试过的

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?[^.]+\.domain\.net.*$
RewriteRule /websites/$1 [L]

我只是用这个获得了 domain.net 的主页。

我们将不胜感激。

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting seo


    【解决方案1】:

    我想,我可以做到!您能否再次尝试这些 .htaccess 指令:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.net$
    RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.net$
    RewriteRule ^/?$ http://domain.net/websites/%2 [P]
    

    它将 $whatever.domain.net 重写为 domain.net/websites/$whatever

    现在如果假设是 $whatever.domain.net 到 domain.net/websites/$whatever.domain .net 那么你可以试试这个:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.net$
    RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.net$
    RewriteRule ^/?$ http://domain.net/websites/%2.domain.net [P]
    

    或者也许下面的这段代码是你将来想要的:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.net$
    RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.net$
    RewriteRule ^(.*)$ http://domain.net/websites/%2.domain.net/$1 [P]
    

    【讨论】:

    • 错误请求 您的浏览器发送了此服务器无法理解的请求。请求头字段的大小超过服务器限制。 X-Forwarded-Host /n :(
    • 糟糕,我犯了一个巨大的错误,它应该是它将 $whatever.domain.net 重写为 domain.net/websites/$whatever.domain.net
    • 我收到 404 个错误页面,再次假设是 $whatever.domain.net 进入 domain.net/websites/$whatever.domain.net 抱歉我对 htaccess 不太了解
    • 如果我将最后的 $2 更改为 $1,我将获得 /webistes 的目录索引
    • 这些都不起作用 错误请求 您的浏览器发送了此服务器无法理解的请求。请求头字段的大小超过服务器限制。 demo.whmcs-templates.net 假设在不显示新网址的情况下显示:demo.whmcs-templates.net/websites/demo.whmcs-templates.net
    【解决方案2】:

    关闭,试试这个:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/websites/
    RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+\.domain\.net.*)$ [NC]
    RewriteRule ^(.*)$ /websites/%2/$1 [L]
    

    请注意,这仅在所有 demo*.domain.net 指向与主域 (domain.net) 相同的文档根目录时才有效。

    【讨论】:

    • 它们都指向主根文件夹,但这对我不起作用我收到内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。
    • @user2314536 忘记添加排除条件
    • 嘿,我犯了一个巨大的错误,对不起,你们假设是 $whatever.domain.net 进入 domain.net/websites/$whatever.domain.net
    • 非常感谢它现在可以工作了 :) 希望我能做些什么来告诉你我是多么的感激 :)
    • @user2314536:为了表示感谢,您可以(并且您应该)将这两个答案中的任何一个标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    相关资源
    最近更新 更多