2016-07-26 8 views
0

Ich habe eine Website, in dem ich diesen Code verwenden in root .htaccess Datei:Wie kann dieser Umleitungskonflikt in WordPress gelöst werden?

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

Das funktioniert gut, bis Wordpress später installiert ist.

Ich installierte WordPress in /blog Teil der Website. /blog Verzeichnis hat es .htaccess besitzen ist:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 
# END WordPress 

Ich glaube, meine Wordpress-Installation globalen Apache Regeln betrifft. Ich möchte alle meine www.mysite.com/blog/my-blog-post-mysite.com/blog/my-blog-post

+0

Sie versucht haben, das 'nicht-www' als' alias' in der apache-Konfiguration für den virtuellen Host hinzufügen, anstatt die '.htaccess'? Ihr '.htaccess' sollte kein Problem sein, und wenn Sie das 301 aus dem root' .htaccess' entfernen, dann wissen Sie, dass es keinen Konflikt geben wird, da nur '.htaccess' im WP-Verzeichnis liegt. Macht das irgendwie Sinn ?! – AshboDev

+0

Wo ist die Einstellung für die Apache-Konfiguration? Ich habe einen gemeinsamen Hosting-Plan. –

+0

Das wäre in Ihrem virtuellen Host-Konfiguration [https://www.digitalcean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts] (Siehe Dies). Welchen Webserver benutzen Sie? LAMP, Xampp etc. – AshboDev

Antwort

0

umleiten Wenn Sie Apache 2.3.10 verwenden und oben, dann können Sie InheritBefore wie folgt verwenden:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteOptions InheritBefore 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 
# END WordPress 

Ansonsten auf älteren Apache-Versionen benötigen Sie www Entfernung Regel in Strom aufzunehmen .htaccess auch wie folgt aus:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteOptions InheritBefore 
RewriteEngine On 
RewriteBase /blog/ 

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

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 

</IfModule> 
# END WordPress 
+0

Es ist defekt, 'www.mysite.com/blog /' verweist mich zu 'mysite.com'. Aber es sollte zu "mysite.com/blog /" umleiten. –

+0

Welche der beiden Optionen hast du ausprobiert? Übrigens sollte Ihr root .htaccess auch mit der 'www'-Entfernungsregel aktualisiert werden, wie oben in meiner Antwort gezeigt. – anubhava