【问题标题】:.htaccess mod_rewrite works only with www.htaccess mod_rewrite 仅适用于 www
【发布时间】:2011-12-15 16:36:34
【问题描述】:

我正在处理的网站的子目录中有一个 .htaccess 文件。当 URL 以 www 开头时,它可以正常工作,但如果缺少 www,它就不起作用。

RewriteEngine On
RewriteBase /media
RewriteRule ^([a-zA-Z0-9_\s\-]+)/?$ index.php?a=$1 [L]
RewriteRule ^([a-zA-Z0-9_\s\-]+)/([a-zA-Z0-9_\s\-]+)$ index.php?a=$1&b=$2 [L]

如果我请求 http://www.mysite.com/media/test,它会起作用,但 http://mysite.com/media/test 不会。我错过了什么?

【问题讨论】:

  • 这里肯定有其他事情发生。您确定 www.mysite.com 和 mysite.com 都映射到您的 Apache 配置中的相同目录吗?

标签: .htaccess mod-rewrite


【解决方案1】:

这与您的重写规则无关,这可能与您的 DNS 配置方式有关。

尝试 ping 两个域:使用和不使用“www”。

这就是我要做的:我配置我的 DNS,以便 一切 无论有没有 www 都被重定向到同一台 PC:

然后我通过 vhost 配置处理所有事情:

<VirtualHost *>

    ServerAdmin webmaster@livrepizzas.fr
    DocumentRoot "/web/htdocs/olivier/livrepizzas/dev/website"

    ServerName livrepizzas.fr
    ServerAlias *.livrepizzas.fr
    ...
    ...
    ...
</VirtualHost>

【讨论】:

    【解决方案2】:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.website.com [NC]
    RewriteRule ^(.*) http://website.com%{REQUEST_URI} [R=permanent,QSA,L]
    

    试试看

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2013-03-19
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2012-06-01
      相关资源
      最近更新 更多