2015-01-22 2 views
1

У меня есть два блога в двух разных доменах, которые я собираю на одном сайте. Я не очень хорошо знаком с администратором сервера, но я на 99% уверен, что я хочу сделать на Bluehost (поскольку они позволяют .htaccess) и с использованием mod_rewrite (или аналогичных.)Переписать URL-адреса для перенаправления и падения нулевого нуля

В настоящее время у меня есть blog1.com и blog2.com и почтовые URL-адреса выглядят как blog1.com/001 и blog2.com/030. То, что я хочу, это для тех, кто входит в один из этих URL-адресов, которые будут перенаправлены на example.com/blog1/1 и example.com/blog2/30

Это означает, что мне нужно:

  1. Перенаправить весь домен в папку на моем новом домене
  2. перенаправлении попадает в URL с ведущими нулями до URL-адресов без ведущих нулей
  3. Это, вероятно, означает, перенаправляя blog1.com/001иexample.com/blog1/001 к example.com/blog1/1

ОБНОВЛЕНО

На http://htaccess.madewithlove.be первый & второе условие соблюдается, но правила не срабатывают.

3-Totally брейки и возвращает странность: http://example.com/blog1/030log1/030

RewriteEngine On 

# redirect blog1.com/030 => example.com/blog1/30 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(blog1|blog2)\. [NC] 
RewriteRule ^0*([1-9]+)/?$ http://example.com/%1/$1 [R=301,L] 

# redirect example.com/blog1/030 => example.com/blog1/30 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC] 
RewriteRule ^(blog1|blog2)/0*([1-9]+)/?$ /$1/$2 [NC,R=301,L] 

# Never use www 
RewriteCond %{HTTP_HOST} ^www.(([a-z0-9_]+.)?example.com)$ [NC] 
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]] 

ответ

2

Вы можете использовать этот код в DOCUMENT_ROOT/.htaccess файле blog1 и blog2 доменов:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(?:www\.)?(blog1|blog2)\. [NC] 
RewriteRule ^0*([1-9]+)/?$ http://example.com/%1/$1 [R=302,L] 

# rule2 for example.com/blog1/030 => example.com/blog1/30 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC] 
RewriteRule ^(blog1|blog2)/0+([1-9]+)/?$ /$1/$2 [NC,R=302,L] 
  • %1 возвращается ссылка на blog1 или blog2 в RewriteCond
  • ^0*([1-9]+) будет соответствовать всем ведущим нулям, оставляя только ненулевые числа в $1
+0

Ну, что кажется достаточно простым. Большое спасибо за объяснение. Правила ванильного регулярного выражения? Подмножество? Superset? – lyonsinbeta

+1

Рад, что все получилось. 'mod_rewrite' использует PCRE-код регулярного выражения. – anubhava

+0

Я тестирую это на http://htaccess.madewithlove.be/, и правило работает (удивительно, спасибо!), Но 'example.com/a/030' не перенаправляется на' example.com/a/ 30' как ожидалось. Должно ли это быть собственным Кондом/Правилом? – lyonsinbeta