如何在 apache 上用 mod_rewrite 重写我的 url?

Posted

技术标签:

【中文标题】如何在 apache 上用 mod_rewrite 重写我的 url?【英文标题】:how to re-write my url with mod_rewrite on apache? 【发布时间】:2010-11-08 13:13:10 【问题描述】:

我购买了一个域名:josecvega.com

每当有人尝试访问 http://www.josecvega.com 时,它都会将他们转发到我的网络服务器。

我已打开掩码,因此当您最初访问我的 IP 网络服务器 68.42.56.13 时,它仍然显示http://www.josecvega.com,但是当您单击将您带到我的网络服务器上另一个位置的链接时,http://www.josecvega.com 消失并变成 IP 地址。我目前正在尝试看看 mod_rewrite 是否可以帮助解决这个问题。

这是我目前在 httpd.conf 中的内容

重写引擎开启 RewriteCond %HTTP_HOST =68.42.56.13

我不确定规则将如何重写 URL。

编辑: 我的httpd.conf 我也明白这个问题与 mod_rewrite 没有严格的关系,但我尝试过用许多不同的方式修复它,但似乎没有工作,我希望它可以用 mod_rewrite 来完成。

【问题讨论】:

链接是否使用包含IP地址的绝对URL? 【参考方案1】:

不确定 mod_rewrite 是否相关。您应该配置您的 VirtualHost 设置,以便使用 ServerName。

例如:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName josecvega.com
ServerAlias www.josecvega.com
DocumentRoot /var/www/vhosts/josecvega.com/htdocs
<Directory /var/www/vhosts/josecvega.com/htdocs>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>

这当然假设您可以访问 httpd.conf,您似乎可以访问。如果需要,您可以向 VirtualHost 添加更多指令,但默认情况下,它将使用主 httpd.conf 的所有设置。

当然,如果您的服务器上只有一个网站,您可以更改 ServerName 主 httpd.conf 文件中的值。

【讨论】:

我已经尝试了你的建议,但它仍然显示我的 IP 而不是域名。我已经发布了指向我的 httpd.conf 的链接,希望您能告诉我哪里出错了。再次感谢。 解决了吗?我看到了域,所以我假设是这样。顺便说一句,将来出于安全原因,请使用 pastebin 发布此类文件。【参考方案2】:

这与mod_rewrite无关。

参见ServerName 和UseCanonicalName 指令。将它们设置为您的主机名并启用规范名称。

【讨论】:

以上是关于如何在 apache 上用 mod_rewrite 重写我的 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据查询字符串在 apache mod_rewrite 中禁止 url?

在Apache中使用mod_rewrite模块重写URL

apache mod_rewrite:如何根据其他目录中的文件存在为同一目录添加不同的重写规则?

如何将 mod_rewrite 与 Apache -> mod_jk -> tomcat 设置一起使用?

如何使用 apache mod_rewrite 规则重定向到动态 URL(不是经典重定向)?

使用 apache 的 mod_rewrite 来解析 SEO 友好的 URL