2015-05-16 2 views
0

Я хотел бы знать, как я могу переписать URL-адрес без перенаправления 302.
Веб-сайт предназначен для двух доменов.Переписать URL-адрес без перенаправления 302

  • Первые домены (domain1.com) фокус все веб-сайт.
  • доменов второго (domain2.com) сосредоточиться только одну функцию сделат URL Shortener

Вот мой .htaccess:

Options +FollowSymlinks 
RewriteEngine on 

RewriteCond %{HTTP_HOST} ^domain2.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain2.com$ 
RewriteRule ^([A-Za-z0-9-]+)$ http://domain2.com/url/$1 [L] 

Rewritecond %{HTTP_HOST} domain2.com [NC] 
RewriteCond %{REQUEST_URI} ^/$ 
Rewriterule ^(.*)$ http://domain2.com/soon/ [QSA,L,R=301] 

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

RewriteCond %{REQUEST_URI} ^application.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Когда я называю мой shothener http://domain2.com/57b97f2 i'am перенаправлять http://domain2.com/url/57b97f2 с перенаправление 302.

Как я могу избежать этого нежелательного перенаправления 302?

======= ======= EDIT:

Мой контроллер для функции url() называется: webadmin

Мои маршруты:

$route['default_controller'] = 'webadmin'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 
$route['(.+)'] = 'webadmin/$1'; 

Webadmin контроллер:

function url($code) 
{ 
    //do something 
} 
+0

Вы должны удалить 'http: // domain2.com' из своих правил (иначе вы получите перенаправление, даже с флагом' L'). Но и «domain1», и «domain2» должны совместно использовать одну и ту же корневую папку документа, чтобы заставить ее работать таким образом. –

+0

Domain1 и Domain2 фокусируют тот же самый корень документа. – Pixel

+0

Хорошо первый хороший момент. Теперь, что вы хотите вместо перенаправления 302? Кроме того, является ли 'url/57b97f2' (например) реальным файлом/папкой? –

ответ

1

Попробуйте вместо этого:

Options +FollowSymlinks 

RewriteEngine on 

# 1. If we're on the root of domain2.com, temporarilty redirect to 
# the `/soon` handler 
# Note: This redirect should really be temporary, as it is a 
#   landing page for your soon-to-be-released app/site. 

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ 
RewriteRule ^$ /soon [R=302,L] 

# 2. If we're on domain2.com, rewrite short URIs to the `/url` handler 
# Note the use of the `N` flag which causes the ruleset to start 
# again from the beginning using the result of the rewrite. This 
# will cause the rewritten URI to be passed to `index.php` (the 
# last RewriteRule). 
# Also added is the NC flag, which may or may not be better than 
# specifying `A-Z` in the pattern's expression. 

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ 
RewriteRule ^([a-z0-9-]+)$ /url/$1 [NC,N] 

# 3. Redirect application/system directory requests to index.php 

RewriteRule ^(application|system) /index.php?/$1 [L] 

# 4. For everything else (sans files and directories), rewrite to index.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

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

Кроме того, я не тестировал это, но он должен работать (теоретически).

+0

Спасибо за упрощенный код, но у меня все еще есть страница «404 страница не найдена». Когда я перехожу на http://www.domain2.com/codeurl – Pixel

+0

Пожалуйста, см. Мое обновление. Я изменил второй блок, чтобы явно переписать его на 'index.php?/Url/$ 1'. –

+0

У меня есть редактирование моего aswer с дополнительной информацией, у меня все еще есть ошибка 404 с вашим обновлением:/ – Pixel

Смежные вопросы