当我让我的网站上线时,如何才能看到.htaccess

时间:2015-10-20 15:43:22

标签: apache .htaccess mod-rewrite url-rewriting

我有一个.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

1 个答案:

答案 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