自 apache 更新以来,重写 www 子文件夹有效,但空请求(域根目录)除外
Rewriting www subfolder works except for empty requests (domain root) since apache update
我有一些 .htaccess 行可以透明地将我的 www 子域重写为 www 子文件夹。现在,由于服务器更新,它不再工作了。
实际上,它仍然有效,除了没有请求的 root(下面的数字 1),它现在给出 404。
这是怎么回事? !^/www
不包含空请求吗?
这是我想要的和之前工作过的:
- http://www.e-motiv.net -> 子文件夹:www
不再工作
- http://www.e-motiv.net/anything -> 子文件夹:www/anything
- http://e-motiv.net/www/(anything) -> 不要重写
这些是我的 htaccess 行:
#### www -> folder /www (not possible via Control Panel)
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteCond %{REQUEST_URI} !^/www
RewriteRule ^ /www%{REQUEST_URI} [L]
#RewriteRule ^(.*)$ /www/ [L] #Variant
#check
DirectorySlash Off
#www dir only
RewriteCond %{DOCUMENT_ROOT}/[=10=] -d
RewriteRule ^www/(.+[^/])$ // [L]
#other dirs
RewriteCond %{DOCUMENT_ROOT}/[=10=] -d
RewriteRule ^(.+[^/])$ // [L]
####
编辑:我发现如果我在第四行添加 R,它会再次起作用,只是现在每个人都可以看到它,这是我不想要的。我现在想知道它是否与 Internal URL rewrite no longer working after upgrading Apache to 2.4
中所说的错误无关
编辑:第三种情况从“http://e-motiv.net/www" to "http://e-motiv.net/www/”重写,因为没有斜线就没有意义。
编辑:尽管下面有针对我的情况的解决方法,但最好的办法是更新您的 apache!我的主人不能,所以对于那些处于同样情况的人来说,它仍然有意义(并且有指导意义)。
这条规则在 Apache 2.4 中对我有用:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteRule ^/?$ www/ [L]
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteRule ^((?!www/).*)$ www/ [L,NC]
我有一些 .htaccess 行可以透明地将我的 www 子域重写为 www 子文件夹。现在,由于服务器更新,它不再工作了。
实际上,它仍然有效,除了没有请求的 root(下面的数字 1),它现在给出 404。
这是怎么回事? !^/www
不包含空请求吗?
这是我想要的和之前工作过的:
- http://www.e-motiv.net -> 子文件夹:www
不再工作 - http://www.e-motiv.net/anything -> 子文件夹:www/anything
- http://e-motiv.net/www/(anything) -> 不要重写
这些是我的 htaccess 行:
#### www -> folder /www (not possible via Control Panel)
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteCond %{REQUEST_URI} !^/www
RewriteRule ^ /www%{REQUEST_URI} [L]
#RewriteRule ^(.*)$ /www/ [L] #Variant
#check
DirectorySlash Off
#www dir only
RewriteCond %{DOCUMENT_ROOT}/[=10=] -d
RewriteRule ^www/(.+[^/])$ // [L]
#other dirs
RewriteCond %{DOCUMENT_ROOT}/[=10=] -d
RewriteRule ^(.+[^/])$ // [L]
####
编辑:我发现如果我在第四行添加 R,它会再次起作用,只是现在每个人都可以看到它,这是我不想要的。我现在想知道它是否与 Internal URL rewrite no longer working after upgrading Apache to 2.4
中所说的错误无关
编辑:第三种情况从“http://e-motiv.net/www" to "http://e-motiv.net/www/”重写,因为没有斜线就没有意义。
编辑:尽管下面有针对我的情况的解决方法,但最好的办法是更新您的 apache!我的主人不能,所以对于那些处于同样情况的人来说,它仍然有意义(并且有指导意义)。
这条规则在 Apache 2.4 中对我有用:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteRule ^/?$ www/ [L]
RewriteCond %{HTTP_HOST} ^www\.e-motiv\.net$ [NC]
RewriteRule ^((?!www/).*)$ www/ [L,NC]