Php .htaccess重写子域

Php .htaccess重写子域,php,apache,.htaccess,Php,Apache,.htaccess,我想让网站的所有URL都属于root domain.com,甚至是资产,并且只属于子域中的类别 示例 domain.com/ domain.com/join.php domain.com/admin/ games.domain.com/ games.domain.com/arcade/ games.domain.com/arcade/10.html 这些url中的每一个都来自=== domain.com/ === index.php domain.com/join.php === join.p

我想让网站的所有URL都属于root domain.com,甚至是资产,并且只属于子域中的类别

示例

domain.com/
domain.com/join.php
domain.com/admin/
games.domain.com/
games.domain.com/arcade/
games.domain.com/arcade/10.html
这些url中的每一个都来自===

domain.com/ === index.php
domain.com/join.php === join.php
domain.com/admin/ === /admin/
games.domain.com/ === main_categories.php?slug=games
games.domain.com/arcade/ === sub_categories.php?slug=games&cat=arcade
games.domain.com/arcade/10.html  === view.php?slug=games&cat=arcade&id=10
我有这个代码,但它不工作

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain.com 
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.domain.com 
RewriteRule .* - [S=3]
RewriteRule ^(.*)$ main_categories.php?prefix=%1 
RewriteRule ^([A-Za-z0-9-]+)/?((index|news|photos|videos|articles)\.html)?$ sub_categories.php?prefix=$1&type=$3 [QSA,L]
RewriteRule ^([A-Za-z0-9-]+)/([0-9-]+)/?(.*)?.html$ view.php?prefix=$1&id=$2&title=$3 [QSA,L]
重新启动发动机

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/(.+)\.html$ /view.php?slug=%1&cat=$1&id=$2 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/$ /sub_categories.php?slug=%1&cat=$1 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^$ /main_categories.php?slug=%1 [L]
如果您的Apache配置不适合您,请添加以下内容

RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule ^$ /index.php
重新启动发动机

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/(.+)\.html$ /view.php?slug=%1&cat=$1&id=$2 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/$ /sub_categories.php?slug=%1&cat=$1 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^$ /main_categories.php?slug=%1 [L]
如果您的Apache配置不适合您,请添加以下内容

RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule ^$ /index.php
重新启动发动机

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/(.+)\.html$ /view.php?slug=%1&cat=$1&id=$2 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/$ /sub_categories.php?slug=%1&cat=$1 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^$ /main_categories.php?slug=%1 [L]
如果您的Apache配置不适合您,请添加以下内容

RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule ^$ /index.php
重新启动发动机

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/(.+)\.html$ /view.php?slug=%1&cat=$1&id=$2 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^(.+)/$ /sub_categories.php?slug=%1&cat=$1 [L]
RewriteCond %{HTTP_HOST} ^(.+).domain.ru$ 
RewriteRule ^$ /main_categories.php?slug=%1 [L]
如果您的Apache配置不适合您,请添加以下内容

RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule ^$ /index.php

如果我完全理解你的话。首先,您需要更新Apache配置或虚拟主机
ServerAlias
,以包含希望Apache响应的所有子域
*.example.com
。您可能需要创建一个通配符子域DNS条目,以便当有人在
games.example.com
中键入时,它知道在哪里发送请求

然后,您需要使用以下规则制定规则,排除
www
非www

#games.domain.com/ === main_categories.php?slug=games
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^ main_categories.php?slug=%1 [L,QSA]

#games.domain.com/arcade/ === sub_categories.php?slug=games&cat=arcade
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/?$ sub_categories.php?slug=%1&cat=$1 [L,QSA]

#games.domain.com/arcade/10.html  === view.php?slug=games&cat=arcade&id=10
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/([^/]+)\.html$ view.php?slug=%1&cat=$1&id=$2 [L,QSA]

如果我完全理解你的话。首先,您需要更新Apache配置或虚拟主机
ServerAlias
,以包含希望Apache响应的所有子域
*.example.com
。您可能需要创建一个通配符子域DNS条目,以便当有人在
games.example.com
中键入时,它知道在哪里发送请求

然后,您需要使用以下规则制定规则,排除
www
非www

#games.domain.com/ === main_categories.php?slug=games
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^ main_categories.php?slug=%1 [L,QSA]

#games.domain.com/arcade/ === sub_categories.php?slug=games&cat=arcade
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/?$ sub_categories.php?slug=%1&cat=$1 [L,QSA]

#games.domain.com/arcade/10.html  === view.php?slug=games&cat=arcade&id=10
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/([^/]+)\.html$ view.php?slug=%1&cat=$1&id=$2 [L,QSA]

如果我完全理解你的话。首先,您需要更新Apache配置或虚拟主机
ServerAlias
,以包含希望Apache响应的所有子域
*.example.com
。您可能需要创建一个通配符子域DNS条目,以便当有人在
games.example.com
中键入时,它知道在哪里发送请求

然后,您需要使用以下规则制定规则,排除
www
非www

#games.domain.com/ === main_categories.php?slug=games
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^ main_categories.php?slug=%1 [L,QSA]

#games.domain.com/arcade/ === sub_categories.php?slug=games&cat=arcade
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/?$ sub_categories.php?slug=%1&cat=$1 [L,QSA]

#games.domain.com/arcade/10.html  === view.php?slug=games&cat=arcade&id=10
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/([^/]+)\.html$ view.php?slug=%1&cat=$1&id=$2 [L,QSA]

如果我完全理解你的话。首先,您需要更新Apache配置或虚拟主机
ServerAlias
,以包含希望Apache响应的所有子域
*.example.com
。您可能需要创建一个通配符子域DNS条目,以便当有人在
games.example.com
中键入时,它知道在哪里发送请求

然后,您需要使用以下规则制定规则,排除
www
非www

#games.domain.com/ === main_categories.php?slug=games
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^ main_categories.php?slug=%1 [L,QSA]

#games.domain.com/arcade/ === sub_categories.php?slug=games&cat=arcade
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/?$ sub_categories.php?slug=%1&cat=$1 [L,QSA]

#games.domain.com/arcade/10.html  === view.php?slug=games&cat=arcade&id=10
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9-]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/([^/]+)\.html$ view.php?slug=%1&cat=$1&id=$2 [L,QSA]



您应该使用MVC体系结构。不必是面向对象的。现在这样做已经太迟了,应用程序已经bultYou说“我想让网站的所有URL都属于根域.com”。Apache如何知道你认为一个类别和什么不是一个类别之间的区别?您需要缩小范围并排除某些URI,这样创建规则就更容易了。只有子域才是我想要的类别,比如RewriteCond%{HTTP\u HOST}^([a-zA-Z0-9-]+)\.domain\.com/([a-zA-Z0-9-]+)/((index | news | photos | videos | articles)\.html)?$您应该使用MVC体系结构。不必是面向对象的。现在这样做已经太迟了,应用程序已经bultYou说“我想让网站的所有URL都属于根域.com”。Apache如何知道你认为一个类别和什么不是一个类别之间的区别?您需要缩小范围并排除某些URI,这样创建规则就更容易了。只有子域才是我想要的类别,比如RewriteCond%{HTTP\u HOST}^([a-zA-Z0-9-]+)\.domain\.com/([a-zA-Z0-9-]+)/((index | news | photos | videos | articles)\.html)?$您应该使用MVC体系结构。不必是面向对象的。现在这样做已经太迟了,应用程序已经bultYou说“我想让网站的所有URL都属于根域.com”。Apache如何知道你认为一个类别和什么不是一个类别之间的区别?您需要缩小范围并排除某些URI,这样创建规则就更容易了。只有子域才是我想要的类别,比如RewriteCond%{HTTP\u HOST}^([a-zA-Z0-9-]+)\.domain\.com/([a-zA-Z0-9-]+)/((index | news | photos | videos | articles)\.html)?$您应该使用MVC体系结构。不必是面向对象的。现在这样做已经太迟了,应用程序已经bultYou说“我想让网站的所有URL都属于根域.com”。Apache如何知道你认为一个类别和什么不是一个类别之间的区别?你需要缩小范围并排除某些URI,这样创建规则就更容易了。只有子域才是我想要的类别,比如RewriteCond%{HTTP\u HOST}^([a-zA-Z0-9-]+)\.domain\.com/([a-zA-Z0-9-]+)/((index | news | photos | videos | articles)\.html)?$游戏不是子域,它只是db中的一个值,我不能让它在子域名和查询变量中保持不变的“游戏”?我希望它像RewriteCond%{HTTP_HOST}^(*).domain.com$games不是子域,它只是db中的一个值,我不能使它在子域名和查询变量中保持一致?我希望它像RewriteCond%{HTTP_HOST}^(*).domain.com$games不是子域,它只是db中的一个值,我不能使它在子域名和查询变量中保持一致?我希望它像RewriteCond%{HTTP_HOST}^(*).domain.com$games不是子域,它只是db中的一个值,我不能使它在子域名和查询变量中保持一致?我希望它像RewriteCond%{HTTP_HOST}^(*).domain.com$它不起作用,但看起来不错,但我认为存在一些错误,例如(示例\com)点在哪里?我更正了语法,但如果您没有更新Apache和Dns,它可能仍然不起作用。我正在使用一些配置,本地主机读取子域,但它不起作用