2010-11-12 3 views
0

Привет и спасибо, что посмотрели на это. У меня есть проблема в том, что мне нужно перенаправить: www.thisdomain.com/index.php на: www.thisdomain.com/Регулярное выражение для перенаправления index.php (но немного сложнее!)

НО ...

это осложняется тем, что У меня есть два файла index.php. Один здесь: www.thisdomain.com/index.php и один здесь: www.thisdomain.com/a_forum/a_forum_submission/index.php

Таким образом, нормальный 301 редирект Я хотел бы использовать это:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ http://www.thisdomain.co.uk/$1 [R=301,L] 

Проблема в том, что это перенаправит и нижний уровень index.php, вернувшись обратно к маршруту, который не нужен.

Итак, я хочу добиться перенаправления www.thisdomain.com/index.php на корень, но БЕЗ перенаправления www.thisdomain.com/a_forum/a_forum_submission/index.php в корень.

Если вы можете мне помочь, я бы очень признателен. Я пробовал все, что знал, но мои знания в области регулярных выражений подталкивают меня.

Еще раз спасибо,

D

ответ

0

Вынимает выражение соответствия шаблона (.*):

RewriteCond %{THE_REQUEST} ^index\.php 
RewriteRule ^index\.php$ http://www.thisdomain.co.uk/$1 [R=301,L] 

должен делать то, что вы ищете. При этом вам может и не понадобиться RewriteCond

0

Более простой способ решения проблемы заключается в создании файла .htaccess внутри www.thisdomain.com/a_forum/a_forum_submission/, перезаписывающего эту перезапись или деактивацию модуля перезаписи.

+0

'.htaccess' файлы * сосут *. Вебсерверу приходится разбирать их каждый раз, когда он обслуживает файл. – whiskeysierra

+0

Я согласен, но многие поставщики веб-серверов не дают вам возможность. – rafaelxy

0

Просто сделать:

RewriteRule ^index\.php http://www.thisdomain.co.uk/ [R=301,L] 

Нет необходимости в состоянии переписать, хотя.

Имейте славный день.

+0

'RewriteRule^index \ .php (. *) Http://www.thisdomain.co.uk/$1 [R = 301, L]' или 'RewriteRule^index \ .php http: //www.thisdomain .co.uk/[R = 301, L, QSA] 'может быть лучше для передачи строк URL. –

0

Попробуйте

Redirect 301 /index.php http://www.thisdomain.com 
0
RewriteRule ^index\.php(.*) http://www.thisdomain.co.uk/$1 [R=301,L] 
Смежные вопросы