удаление www и index.php из URL в symfony - PullRequest
4 голосов
/ 22 октября 2011

Я искал примерно 3 или 4 часа безрезультатно (перед поиском я часами играл с правилами, но не смог этого сделать)

Не знаю, заметил ли тыили нет, но Google использует www как этот

, когда у него нет субдомена, это будет www.google.com/blabla, а когда есть субдомен, это будет earth.google.com/blabla

Это первая часть

А вторая часть, как вы знаете в URL-адресах symfony, похожа на domain.com/index.php/test, и благодаря файлу symfony .htaccess вы можете получить к нему доступ через domain.com/ test Итак, вот что я так старался добиться:

domain.com / test redirect для www.domain.com/test

www.sub.domain.com / blabla redirect для 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)

Так есть ли способ с помощью одного перенаправления решить эту проблему?Я уверен, что я не единственный, кому нужно что-то подобное, и это может быть идеей для других людей, которые собираются иметь свой сайт с 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 Ответ

1 голос
/ 24 октября 2011

В вашей конфигурации VHOST:

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

Также обратите внимание, что с эстетической точки зрения вы можете предпочесть удалить www., Глядя с технической точки зрения (DNS, cookie, ...),всегда лучше использовать префикс www. и перенаправлять наоборот.

...