从symfony的url中删除www和index.php

时间:2011-10-22 11:50:15

标签: apache mod-rewrite symfony1 no-www

我一直在搜索3到4个小时而没有任何结果(在搜索之前我玩了一个小时的规则却无法做到)

我不知道你是否注意到或没有谷歌使用www这样的

当它没有子域名时,它将是www.google.com/blabla和 如果有子域名,则为earth.google.com/blabla

这是第一部分

第二部分,正如您在symfony网址中所知,就像domain.com/index.php/test,感谢symfony .htaccess文件,您可以通过domain.com/test访问它 所以这就是我努力实现的目标

domain.com/test重定向到www.domain.com/test

www.sub.domain.com/blabla重定向到sub.domain.com/blabla

www.sub.domain.com/重定向到sub.domain.com(没有任何index.php XD)

我遇到的一个令人烦恼的问题是从domain.com/重定向到www.domain.com,重定向后就像是www.domain.com/index.php(而且我讨厌index.php:P)< / p>

有没有办法让一个重定向解决这个问题? 我敢肯定,我不是唯一一个需要这样的人,并且可能是其他人的想法,他们将使用symfony或其他框架拥有他们的网站 感谢

这是我完整的htaccess文件

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # The admin subdomain returns to the backend
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{HTTP_HOST} ^admin\.mydomain\..*
  RewriteRule ^(.*)$ backend.php [QSA,L]

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  RewriteCond %{HTTP_HOST} !^www.mydomain.com$
  RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301]

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

在你的VHOST配置中:

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

另请注意,从美学的角度来看,您可能更愿意删除www。,从技术角度(DNS,Cookie,...)来看,最好以www。为前缀,并在相反的方式。