工作精细: www.exampledomain.co.uk {/ with-any-url}
GIVES 404错误: exampledomain.co.uk {/ with-any-url}
我遇到了在linux / apache2上运行的网站的问题,其中' www。'网址工作得很好,但是使用了' www。'删除每个网址都会返回404。域名在dnsstuff.com检查中没有显示错误,www和常规域指向相同的IP地址。
当我使用cmd ping域名和www时。域,都解析为相同的IP并做出响应。
我在Web根目录的.htaccess文件中实现了这个代码,该文件用于添加' www。'到非www请求:
Options +FollowSymlinks
Options All -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
然而,这也不起作用。确切的重写规则在另一个网站上进行测试和运行,以强制执行“www.ch”。作为前缀。
这是正在使用的vhosts conf文件:
<VirtualHost *:80>
ServerAdmin exampleuser@exampledomain.co.uk
ServerName www.exampledomain.co.uk
ServerAlias exampledomain.co.uk
DirectoryIndex index.php index.html
DocumentRoot /home/exampleuser/public/example.co.uk/public_html
<Directory /home/exampleuser/public/example.co.uk/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
LogLevel warn
ErrorLog /home/exampleuser/public/example.co.uk/log/error.log
CustomLog /home/exampleuser/public/example.co.uk/log/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName exampledomain.co.uk
Redirect permanent / http://www.exampledomain.co.uk/
</VirtualHost>
服务器名称和别名的定义方式与此处显示的内容相反(apache重新启动中间更改)和第二个vhosts条目,用于&#39; Redirect permanent&#39;之后被添加,一切都没有效果。
可能导致此行为的原因是什么?我还应该检查一下吗?搜索了这么多材料以找到解决方案但却看不到任何错误或遗漏。任何帮助将不胜感激!
答案 0 :(得分:0)
今天我注意到,在之前的测试服务器实例中, / etc / apache2 / sites-enabled / 中还有另一个vhosts conf文件被遗忘并命名为 example.co.uk .conf - 主要 exampledomain.co.uk.conf 文件指向的网站使用的目录名是 / home / exampleuser / public / 示例.co.uk / public_html 所以我在里面查了一下这个文件包含一个空的vhosts声明:
<VirtualHost *:80>
</VirtualHost>
如果此<VirtualHost>
部分已注释掉哈希值或已删除,或者conf文件已重命名为 example.co.uk.conf 以外的其他内容,则非www。然后,请求被路由到正确的Web根目录,就像使用www一样。请求和问题得到解决。
但是,我不清楚为什么 example.co.main.uk 被选择用于 exampledomain.co.uk 的请求,而不是那些 > www.exampledomain.co.uk ,如果有人可以扩展此答案,请编辑或评论。谢谢!