Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 动态子域+;通过htaccess定义的子域_.htaccess_Mod Rewrite_Subdomain_Wildcard Subdomain - Fatal编程技术网

.htaccess 动态子域+;通过htaccess定义的子域

.htaccess 动态子域+;通过htaccess定义的子域,.htaccess,mod-rewrite,subdomain,wildcard-subdomain,.htaccess,Mod Rewrite,Subdomain,Wildcard Subdomain,我讨厌问关于mod_重写的问题,但我似乎无法让这些规则正常工作。我以前做过一次安装,也做过一次,但几年过去了,现在玩得不好,我的mod_重写知识又回来了 基本上,我想做的是在主域example.com上强制使用www。(或者强制不使用www会更好,但我还没能远程将其与动态子域一起正常工作) 如果存在my.example.com规则,则相应地遵循它们 对于任何其他文件,例如:*.example.com,请传递到另一个文件进行解析 我目前使用的规则处理强制www,并正确处理动态子域,但完全忽略my.

我讨厌问关于mod_重写的问题,但我似乎无法让这些规则正常工作。我以前做过一次安装,也做过一次,但几年过去了,现在玩得不好,我的mod_重写知识又回来了

基本上,我想做的是在主域example.com上强制使用www。(或者强制不使用www会更好,但我还没能远程将其与动态子域一起正常工作)

如果存在my.example.com规则,则相应地遵循它们

对于任何其他文件,例如:*.example.com,请传递到另一个文件进行解析

我目前使用的规则处理强制www,并正确处理动态子域,但完全忽略my.example.com规则,将其作为通配符子域处理。看来我可以让我的任何一条规则正常运行,但当我试图让它们一起工作时,那只是一个混蛋。如果有人知道必须让它正常工作,那将不胜感激

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# force www on main, force no www would be better.
RewriteCond %{HTTP_HOST} !^(.*)\.example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

# my.example.com  defined subdomain
RewriteCond %{HTTP_HOST} !^my\.example\.com$ [NC]
RewriteRule ^.*$ - [S=3]
RewriteRule ^$ /mydirectory/index.php [L]
RewriteRule ^category/([^/]+)/?$ /mydirectory/index.php?category=$1  [L]
RewriteRule ^submit/?$ /mydirectory/process.php [L]

# *.example.com
RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC]
RewriteCond %1 !^(www)\.examples$ [NC]
RewriteRule ^([^/]+)/?$ /subdomainparse/index.php?subdomain=%1&fakedirectory=$1 [L]
试试这些规则:

# remove www on main
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# my.example.com  defined subdomain
RewriteCond %{HTTP_HOST} !^my\.example\.com$ [NC]
RewriteRule ^.*$ - [S=3]
RewriteRule ^$ /mydirectory/index.php [L]
RewriteRule ^category/([^/]+)/?$ /mydirectory/index.php?category=$1  [L]
RewriteRule ^submit/?$ /mydirectory/process.php [L]

# *.example.com
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^([^/]+)/?$ /subdomainparse/index.php?subdomain=%1&fakedirectory=$1 [L]

第一条规则现在将+www.example.com*重定向到example.com。第三条规则将捕获对不存在的主机的任何请求。

Hmm…在我的测试服务器上似乎可以正常工作。是
我的
实际上是
我的
,还是别的什么?这似乎工作得很好。在Tim的评论之后,我再次清除了缓存,我的原始规则开始工作,所以像往常一样,这主要是我的用户错误,但我很高兴没有www工作,非常感谢Gumbo!