【问题标题】:Alias and rewriterules working together别名和重写器一起工作
【发布时间】:2012-06-01 17:35:20
【问题描述】:

我有多个域名指向一个 Apache2 虚拟主机:

ServerName domain1.com
ServerAlias domain2.com
ServerAlias domain3.com

为了始终显示相同的 url,我使用了这样的重写器:

RewriteCond %{HTTP_HOST} !^domain1.com [NC]
RewriteRule (.*) http://domain1.com/$1 [R=301,QSA,L]

我终于有了这样的别名:

Alias /niceurl /long/path/to/index.php

一切正常,除了当用户访问domain2.com/niceurl/foo时,浏览器中显示的url将是domain1.com/path/to/index.php/foo,而不是domain1.com/niceurl/foo

我应该补充一点,其他情况按预期工作,换句话说:

domain2.com/foo => domain1.com/foo
domain1.com/shorturl/bar => domain1.com/shorturl/bar

有没有聪明的方法来实现我想要的?感谢您的任何提示!

【问题讨论】:

标签: apache url-rewriting httpd.conf short-url


【解决方案1】:

如果您有权访问文档根目录,则解决方案是创建符号链接:

ln -s /<path to application> /<document root>/foo

【讨论】:

    【解决方案2】:

    您真的需要在域重定向上添加查询字符串 (QSA) 吗?

    在没有它的情况下试试你的规则:

    RewriteRule (.*) http://domain1.com/$1 [R=301]
    

    【讨论】:

    • 您对 QSA 的看法是对的,但这并不能解决问题。域重定向工作正常,但不保留“niceurl”部分。 (我希望完整的 url 起作用的原因是域名是一个 IDN,并且许多人仍然习惯于在域名中将 å 替换为 a,将 ö 替换为 o 等,因此会有指向该站点的链接)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多