правила перезаписи isapi удаляют блог с URL-адреса WordPress

#apache #wordpress #mod-rewrite #rewrite #isapi

#apache #wordpress #мод-перезапись #url-переписывание #isapi

Вопрос:

хотя я новичок в переписывании, я попытаюсь сначала описать эту проблему на английском, чем начать тему о том, как исправить эту проблему со всей вашей помощью.

Я пытаюсь удалить папку / blog / со следующего URL:

http://blog.site.com/blog/2011/05/26/article-name-test/

с помощью:

http://blog.site.com/2011/05/26/article-name-test/

Ответ №1:

Поместите этот код в свой файл .htaccess:

 Options  FollowSymlinks -MultiViews
RewriteEngine on

RewriteRule ^blog/?(.*)$ /$1 [R=301,L,NE,NC]
  

Обновление: на основе ваших комментариев

Вот ваш предложенный .htaccess:

 RewriteCond %{HTTP_HOST} ^www.site.me$ [NC]
RewriteRule ^ http://site.me%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_HOST} ^holisticho.me$ [NC]
RewriteRule ^blog/ http://blog.site.me [R=301,L,NC]
  

Текущие изменения Криса Хафа

 Options  FollowSymlinks -MultiViews -Indexes
# ------------------------------------------------------------
# Core rewrite rules
# -----------------------------------------------------------
RewriteEngine on
# -----------------------------------------------------------
# Redirect deleting leading www to root domain if no specified sub is used:
# Allowed Subs: our, test, test.blog, local, local.blog
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} !^(our|test|test.blog|local|local.blog).holisticho.me$ [NC]
RewriteCond %{HTTP_HOST} ^([^.] ).holisticho.me$
RewriteRule ^(.*)$ http://holisticho.me/$1 [R=301,L]4
# -----------------------------------------------------------
# Temporary Base Redirect Until Phase One Has been completed
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^holisticho.me$ [NC]
RewriteRule ^(.*)$ http://our.holisticho.me/$1 [R=301,L]
# -----------------------------------------------------------
# Redirect Any Domains not speficied using /blog/ to the primary url for the blog
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^(test|local).holisticho.me$ [NC]
RewriteCond %{REQUEST_URI} ^/blog/$ [NC] 
RewriteRule (.*) http://our.holisticho.me/ [R=301,L]
# -----------------------------------------------------------
# User can use /login or /admin to log into WP
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^(our|test.blog|local.blog).holisticho.me$ [NC]
RewriteRule ^(login|admin)$ http://%{HTTP_HOST}/blog/wp-login.php [NC,L]
# -----------------------------------------------------------
# If the wp-admin redirect is triggered redirect to the log in page with no query string
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^(our|test.blog|local.blog).holisticho.me$ [NC]
RewriteCond %{REQUEST_URI} wp-login [NC]
RewriteCond %{QUERY_STRING} redirect_to [NC]
RewriteRule () http://%{HTTP_HOST}/blog/wp-login.php$1?  [R=permanent,NC,L]
# -----------------------------------------------------------
# Add hidden "/blog/" to the url structure 
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^(our|test.blog|local.blog).holisticho.me$ [NC]
RewriteRule !^blog/ blog%{REQUEST_URI} [L,NE,NC]
# -----------------------------------------------------------
# WordPress Permalink formatting
# -----------------------------------------------------------
RewriteCond %{HTTP_HOST} ^(our|test.blog|local.blog).holisticho.me$ [NC]
RewriteRule ^index.php$ - [L,NE,NC]
RewriteCond %{HTTP_HOST} ^(our|test.blog|local.blog).holisticho.me$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,NE,NC]
# -----------------------------------------------------------
# Site Wide Error Controllers
# -----------------------------------------------------------
ErrorDocument 400 /400.php
ErrorDocument 401 /401.php
ErrorDocument 402 /402.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
# -----------------------------------------------------------
# Using browser cache: FileETag MTime Size
# -----------------------------------------------------------
<ifmodule mod_expires.c>
 <filesmatch ".(jpg|gif|png|css|js)$">
  ExpiresActive on
  ExpiresDefault "access plus 1 year"
 </filesmatch>
</ifmodule>
# -----------------------------------------------------------
# Compress static data
# -----------------------------------------------------------
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
# -----------------------------------------------------------
# Protect blog from hotlinking
# -----------------------------------------------------------
RewriteCond %{HTTP_REFERER} !^http://(. .)?holisticho.me/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*.(jpe?g|gif|bmp|png)$ /includes/images/administrative/NoHotlinking.png [L]
# -----------------------------------------------------------
# Fix for infinite loops
# -----------------------------------------------------------
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
# -----------------------------------------------------------
  

Комментарии:

1. это удаляет блог, но, похоже, он пока не работает на 100% корректно. домашняя страница blog.site.com/blog не изменяется на blog.site.com что может вызывать проблему с настройками WP url. также параметры WP .htaccess следующие: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine На RewriteBase / RewriteRule ^index.php $ — [L] RewriteCond %{REQUEST_FILENAME} ! -f перезаписать второй%{REQUEST_FILENAME} ! -d RewriteRule . /index.php [L] </IfModule> # END WordPress большое спасибо за вашу помощь

2. Не могли бы вы, пожалуйста, предоставить более подробную информацию, например, что не соответствует 100%? Когда я тестировал на своей стороне, URI /blog/2011/05/26/article-name-test/ стал /2011/05/26/article-name-test/ , и я подумал, что это то, что вы хотели.

3. извините, слишком быстро нажал enter, последний обновленный комментарий помог?

4. О, нет проблем, я просто отредактировал ответ, чтобы также позаботиться о /blog типе URI, пожалуйста, попробуйте еще раз. Также ваш WP .htaccess может находиться в каталоге blog, и этот файл вы должны поместить в файл root .htaccess.

5. все еще не работает : ( вот мой .htaccess в корне основного домена: