WordPress Subdirectory ve Subdomain Kullanımı

Wordpres kurulumu aşamasında tercih edebileceğiniz pek çok yöntem olduğundan daha önce bahsetmiştim. Softaculous ve benzeri uygulamalar üzerinden de elbette hızlı bir şekilde kurulum gerçekleştirilebilir.

AA

Bu durumda ilgili yönergeler içerisinde kurulumun gerçekleştirileceği dizin/klasör için alan olduğunu da görebilirsiniz.

WordPress Kurulum

wget veya curl ile WordPress1 ya da GitHub2 üzerinden indirme işlemi gerçekleştirdiğinizde aksi belirtilmediği sürece arşiv içeriğinin bir klasör içeriğinde (wordpress veya WordPress-x) tutulacağını görebilirsiniz. Örneğin, latest.zip arşivini indirdiğimizi varsayalım. İndirilen arşivi unzip ile açtığımızda wordpress adında bir klasör oluşacaktır. Bu durumu basit bir şekilde düzenlemek için şu komutu kullanabiliriz:

unzip -qq latest.zip && mkdir test && mv ./wordpress/* ./test/ && rm -rf wordpress latest.zip

Yukarıdaki komut latest.zip arşivi sonrasında oluşan wordpress klasör içeriğini test adında oluşturduğumuz bir diğer klasöre aktarmakta ve ardından hem wordpress klasörünü hem de latest.zip arşivini silmekte. Şayet komut içerisinde yer alan test yerine dosyaların doğrudan bulunulan dizine açılmasını istersek komutumuzu şu şekilde güncelleyebiliriz:

unzip -qq latest.zip && mv ./wordpress/* ./ && rm -rf wordpress latest.zip

Örneğin ornekwebsitesi.com web adresimiz içeriğine bu indirme işlemini gerçekleştirmiş ve wordpress klasörünü korumuş olalım. Bu durumda wordpress kurulum işlemlerimiz biz aksini belirtmediğimiz sürece ornekwebsitesi.com/wordpress adresi üzerinden yayınlanacaktır. Elbette subdomain tanımlaması yaparsak wordpress.ornekwebsitesi.com şeklinde de yayınımızı gerçekleştirebiliriz. Bu durumda en basit çözüm wordpress içeriğini bir üst dizine (doğrudan webroot; html, public_html, www, vb.) taşımaktır, yani /var/www/html/worpdress içeriğindeki dosyaları /var/www/html/ altında tutmaktır. Ancak tek yöntem bu değil.

.htaccess Düzenlemesi

Evet, .htaccess dosyasını güncelleyerek farklı bir klasördeki WordPress kurulumunu doğrudan ana URL üzerinden görüntüleyebiliriz. Bu işlem içim öncelikle .htaccess dosyasını webroot dizinine taşımalıyız. Ardından dosya içeriğini aşağıdaki gibi düzenlemeliyiz.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?ornekwebsitesi.com$
RewriteCond %{REQUEST_URI} !^/worpdress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.\*)$ /wordpress/$1
RewriteCond %{HTTP_HOST} ^(www.)?ornekwebsitesi.com$
RewriteRule ^(/)?$ wordpress/index.php \[L\]

Yukarıdaki tanımlama içerisinde yer alan ornekwebsitesi.com ve wordpress klasör isimlerini kendi işlemlerinize göre değiştirebilirsiniz.

URL Düzenlemesi

Diğer yöntemde ise WordPress adresi (URL) ve Site adresi (URL) alanlarını düzenleyip .htaccess dosyası üzerinden bu düzenlemeleri tanımlamalıyız. WordPress adresi (URL) wordpress kurulumumuzu yaptığımız klasörü, Site adresi (URL) ise kullancıların sitemizi görüntülemelerini sağladığımız yoldur, yani ikisi birbirinden farklı olabilir.

WordPress

Bu işlemi web alanadı değişikliklerinde de kullanabilirsiniz. Eğer bir nedenden dolayı wp-admin erişiminde problem yaşarsanız ilgili değişiklikleri wp-config.php içerisine WP_HOME ve WP_SITEURL satırlarını ekleyerek de gerçekleştirebilirsiniz.

define( 'WP_HOME', 'http://ornekwebsitesi.com/wordpress' );
define( 'WP_SITEURL', 'http://ornekwebsitesi.com' );

update_option ile yukarıdaki işlemi aktif tema içerisinde yer alan functions.php dosyasıyla da gerçekleştirmek mümkün.

update_option( 'siteurl', 'http://ornekwebsitesi.com/wordpress' );
update_option( 'home', 'http://ornekwebsitesi.com' );

Bir diğer alternatif de WP-CLI üzerinden wp option komutunu kullanmak.

wp option update home 'http://ornekwebsitesi.com/wordpress'
wp option update siteurl 'http://ornekwebsitesi.com'

Site adresinde değişiklik yapmak istediğinizde wp search-replace ile tüm değişiklikleri tek seferde gerçekleştirebilirsiniz.

wp search-replace 'ornekwebsitesi.com' 'yeniornekwebsitesi.com' --skip-columns=guid

Yukarıdaki işlemlerin dışında daha pek çok alternatif mevcut (SQL komutları gibi). İlgili diğer alternatifler için Changing The Site URL3 ve Giving WordPress Its Own Directory4 yazılarına göz atabilirsiniz. Tüm bu işlemler wordpress erişimini subdirectory ve/veya doğrudan ana alanadı üzerinden sağladığımız durumlar için geçerli. Peki, subdomain kullanmak istersek ne yapmalıyız? Elbette klasör düzenlemeleri (wordpress kurulumunu farklı klasörde tutmak vb.) için aynı işlemler geçerliliğini koruyacaklardır. Yapmamız gereken ek düzenlemeler ise cPanel ve benzeri yönetim sistemi üzerinden subdomain oluşturmak (wilcard kullanımı elbette tavsiyem) ve .htaccess içeriğini gerekli şekilde düzenlemek5.

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Peki, kurulumunuzun wordpress adlı klasörde olduğunu ancak erişimin altsite.ornekwebsitesi.com adresiyle sağlanmasını istediğimizde yapmamız gereken nedir?

cPanel Subdomain

Doğrudan wordpress klasörü içerisindeki .htaccess içeriğini aşağıdaki gibi düzenlememiz yeterli olacaktır.

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Asıl yapılması gereken işlem cPanel ve benzeri yönetim sistemi üzerinden subdomain oluşturma aşamasında subdomain belirledikten sonra klasör yolu olarak WordPress dosyalarının yer aldığı dizini belirtmektir. Yani, site.ornekwebsitesi.com adresi üzerinden esasında /var/www/html/wordpress içeriğindeki sitemizi görüntülüyor oluruz. Evet, WordPress subdirctory ve subdomain yapılandırmalarımızı farklı senaryolar dahilinde farklı şekillerde yönetmemiz mümkün.