我有一些.htaccess行可以透明地将我的www子域重写为www子文件夹。现在,自服务器更新以来,它不再起作用了
实际上,它仍然有效,除了没有请求的root(下面的数字1),现在给出404。
这是怎么回事? !^/www
不包含空请求吗?
这是我以前想要和工作的:
这些是我的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/$1 [L] #Variant
#check https://stackoverflow.com/questions/9083514
DirectorySlash Off
#www dir only
RewriteCond %{DOCUMENT_ROOT}/$0 -d
RewriteRule ^www/(.+[^/])$ /$1/ [L]
#other dirs
RewriteCond %{DOCUMENT_ROOT}/$0 -d
RewriteRule ^(.+[^/])$ /$1/ [L]
####
编辑:我发现如果我在第四行添加R,它会再次起作用,除了现在每个人都能看到它,我不想要它。我现在想知道它是否与Internal URL rewrite no longer working after upgrading Apache to 2.4中所说的虫子无关
编辑:第三种情况从“http://e-motiv.net/www”重写为“http://e-motiv.net/www/”,因为没有斜线就没有意义。答案 0 :(得分:1)
此规则在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/$1 [L,NC]