2013-05-24 5 views
0

Я работаю над файлом htaccess для моего сайта mvc. Программное обеспечение, которое компания приобрела для сайта, работает только без www, поэтому я смог исправить htaccess, чтобы разрешить www в URL-адресе, так как большинство наших партнеров будут пытаться использовать его в любом случае. Однако это делает сайт siteurl.org/index.php/admin, а siteurl.org/index.php/members недоступен. Я пытаюсь исключить эти URL-адреса с www-forward на не-www, но все, что я знаю и могу найти, похоже, относится к сайтам, отличным от MVC, и кажется, что сайты mvc настроены по-разному по всем направлениям, поэтому примеры, я не работаю для меня.htaccess redirect на mvc framework

Вот мой текущий Htaccess (я должен был закомментируйте экспедиционные строки позволяют администраторам получить доступ к разделу и филиалов администратора для доступа к разделу члена)

<Files ~ "serial.txt$"> 
    Order allow,deny 
    Deny from all 
</Files> 

RewriteEngine On 

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


RewriteRule ^aff/(.*)$ /index.php/aff/?aff=$1 [R,L] 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [R=301,NC] 

Если можно было бы решить в то же время, Мне также понравился указатель на то, как очистить этот URL-адрес, чтобы мы могли набирать siteurl.org/admin, а не siteurl.org/index.php/admin (то же самое для участников), а также показывать имя партнера в URL-адресе (в настоящее время он очищает URL-адрес, чтобы удалить имя/aff/affiliateus, но филиалы хотели бы увидеть их имя в URL-адресе). Если у кого-то есть отличная ссылка на конкретные ресурсы при написании htaccess для MVC, я буду бесконечно благодарен. Заранее благодарю вас за любую помощь.

ответ

1

Давайте проясним на три вещи, прежде чем идти в объяснения:

  • Apache не имеет ухода в мире ли построен ваш сайт на MVC подход/шаблон проектирования или нет. Это. Не имеет. Даже. Видеть. Это. Для этого он видит правила htaccess mod_rewrite.
  • Тот, кто ставит серийный код в файле serial.txt в корневой папке, просто попросил, чтобы он получил доступ к файлу с уязвимостью в PHP.
  • Это подозрительно похоже на CodeIgniter в правилах перезаписи.

Теперь. Ваши правила:

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

Это правило будет соответствовать только в том случае, если хост http не запускается с www. , Если это верно, то он перенаправляется на http: // www. версия.

На основании вашего описания, вы хотите, наоборот: Ваш CMS не работает с WWW .. Таким образом, вы хотите:

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

Обратите внимание, что вам нужно жёстко свой домен там. Отстой.

Следующая набор правил:

RewriteRule ^aff/(.*)$ /index.php/aff/?aff=$1 [R,L] 

Это болотно-стандарт - перенаправляет АРР/все, чтобы /index.php/aff/?aff=$1

В будущем, изменить его к этому :

RewriteRule ^aff/(.*)$ /index.php?/aff/?aff=$1 [L] 

Это очистит URL-адрес и предотвратит цикл перезаписи Apache.

Следующая один:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [R=301,NC] 

Они будут групповыми символами сопрягать все, что не существует.То же, что и раньше, измените последнюю строку следующим образом:

RewriteRule ^(.*)$ /index.php?$1 [L] 

Это также сделает прозрачным переписывание.

P.S: получить настоящего разработчика CMS. 301 вряд ли полезны.

+0

Nice. Очевидно, что htaccess не является (YET) моей сильной стороной, но я надеюсь исправить это. Филиалы получают свою «сжатую» страницу, динамически создаваемую на основе БД. Если они набирают WWW, их страница сжимания не будет загружаться и перенаправляться на корпоративную, и именно поэтому у меня есть переадресация www. Но это ломает 2 других участка сайта, админов и пользователей. Он должен загружать страницу сжимания правильно и без WWW, а также загружать области входа для пользователей и администраторов без www. Если я укажу конкретные перенаправления URL-адресов, как в RewriteCond и RewriteRule, он либо ничего не делает, либо бесконечный цикл – user1867350

+0

Я попытался опубликовать изменения и сохранил их все, кроме переадресации www. Как я могу оставить/aff/out URL-адреса при загрузке страницы сжатия? Все еще не разрешает область входа администратора и пользователя – user1867350

+0

@ user1867350: Определите «страницу сжимания». В прошлый раз, когда я работал с интернет-маркетологами, было 3 года назад - каков соответствующий ему канонический URL-адрес? –