【问题标题】:Virtual host conf file redirect adds local file path虚拟主机 conf 文件重定向添加本地文件路径
【发布时间】:2011-05-25 20:19:37
【问题描述】:

我将以下重写添加到我的虚拟主机的 conf 文件中:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
.... A bunch of aliases here

该网站在 www 上运行良好。但是,如果您输入的域没有 www。该站点将被重定向到 www.example.com/home/example/public_html - 它添加了文件路径。我怎样才能防止这种情况发生?

这是别名:

Alias /index.php /home/cms/public/index.php
Alias /skins/admin /home/cms/public/skins/admin
AliasMatch ^/scripts/(\w+)/admin/(\w+)\.js /home/cms/modules/$1/scripts/admin/$2.js
AliasMatch ^/scripts/(\w+)/(\w+)\.js /home/cms/modules/$1/scripts/$2.js
Alias /scripts /home/cms/public/scripts 
AliasMatch (?i)^/flash/([A-Za-z]*)/([A-Za-z_]*).swf$ /home/cms/public/flash/$1/$2.swf
Alias /css /home/cms/public/css
Alias /thirdparty /home/cms/public/thirdparty
RewriteEngine off
<Directory /home/cms>
    Order allow,deny
    Allow from all
</Directory>
<Location />
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]
</Location>

【问题讨论】:

  • 你能提供一些关于你的别名的信息吗?请求应该像这样工作。
  • 您的虚拟主机配置是否有更高级别的规则? public_html 通常用于每个用户的配置。

标签: regex apache mod-rewrite rewrite


【解决方案1】:

根据documentation,你应该在正则表达式中有本地路径,在分组之前:

RewriteRule ^\/home\/example(.*) http://www.example.com$1 [R=301,L]

也根据文档:

在第一个 RewriteRule [模式] 上应用 到 (%-decoded) 的 URL 路径 要求;随后的模式是 应用于最后的输出 匹配的 RewriteRule。

这表明您在该规则之前还有其他 RewriteRules。

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 2012-03-29
    • 2018-06-03
    • 1970-01-01
    • 2015-08-16
    • 2013-10-04
    • 2017-01-07
    • 2020-05-25
    相关资源
    最近更新 更多