我有一个.htaccess文件,其中(除其他外)创建了漂亮的网址。以下是该文件的一部分示例:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
...
# Pretty urls
RewriteRule ^home(\d+)*$ ./index.html
RewriteRule ^contact(\d+)*$ ./contact.html
RewriteRule ^enquire(\d+)*$ ./enquire.html
RewriteRule ^terms(\d+)*$ ./terms.html
RewriteRule ^about(\d+)*$ ./about.html
RewriteRule ^owners(\d+)*$ ./owners.html
我目前正在将该网站迁移到digitalocean上的新托管。当我通过浏览IP来测试网站时,例如
111.222.333.444/html_docs/contact
.htaccess文件运行正常。重写规则已启用,网站正确重写网址并向浏览器提供(在本例中为 contact.html )。
当我更改名称服务器并在传播后按域浏览网站时,例如
mydomain.com/contact
.htacces文件无法进行重定向,至少看起来根本没有看到它。这对我来说很奇怪,因为它在我通过ip浏览时起作用。我故意在.htaccess中加入一些垃圾来测试它是否被拾取。再说一遍,如果我通过ip浏览,我会得到一个我期望的500,但是当按域名浏览时,我没有收到错误,但是重写不起作用。
我正在这个阶段敲打我的脑袋,无法弄明白。任何帮助表示赞赏,
非常感谢,Wittner
答案 0 :(得分:0)
好吧,对于.htaccess的工作方式缺乏了解,更多的是没有正确配置我的虚拟主机设置。
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
ServerAdmin me@mydomain.com
DocumentRoot "/var/www/mydomain.com/html_docs/"
<Directory "/var/www/mydomain.com/html_docs/"> <-- Problem was here
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
事实证明,在标签中我遗漏了域根的路径。因此,当我通过IP直接浏览网站时,系统能够解决这个问题,但在浏览时却没有。我所有的.htaccess东西现在都在工作。感谢所有看过的人和回复的任何人。生活和学习我猜: - )
欢呼声,
Wittner