/ / htaccess nie przekierowuje w przypadku subdomeny www - .htaccess, serwer

htaccess nie przekierowuje w przypadku poddomeny www - .htaccess, serwer

Mam problemy z uruchomieniem witryny Wordpress w podfolderze. Struktura jest następująca:

 home
.htaccess
- folder1
- wp
- folder2
- another wp (not important for this)

.Htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
# non-www domain
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.tld$
RewriteRule ^(/)?$ folder1/index.php [L]

To działa dobrze. Za każdym razem, gdy wpisuję w przeglądarce nazwę domain.tld, jestem przekierowywany do pliku index.php w folderze 1. Ale to nie robi sztuczki dla www.domain.tld. W tym przypadku otrzymuję:

403 Zabronione Nie masz uprawnień dostępu / na tym serwerze.

Czy ktoś ma pomysł, jaki rodzaj kodu .htaccess przekieruje poprawnie wszystkich użytkowników www.domain.tld?

Odpowiedzi:

0 dla odpowiedzi № 1

Twój .htaccess plik jest w porządku. Skonfigurowałem maszynę wirtualną z Debianem, zainstalowałem serwer WWW Apache i skonfigurowałem strukturę folderów tak jak ty:

@ /var/www/domain.tld
20:18:12 $ ls -laR
.:
total 16
drwxr-xr-x  3 root root     4096 Jan 17 20:16 .
drwxr-xr-x 32 root root     4096 Jan 17 20:10 ..
drwxr-xr-x  2 root root     4096 Jan 17 20:11 folder1
-rw-r--r--  1 root root      295 Jan 17 20:09 .htaccess

./folder1:
total 12
drwxr-xr-x 2 root root 4096 Jan 17 20:11 .
drwxr-xr-x 3 root root 4096 Jan 17 20:16 ..
-rw-r--r-- 1 root root   22 Jan 17 20:06 index.php

Skonfigurowałem Apache w następujący sposób:

<VirtualHost *:80>
DocumentRoot /var/www/domain.tld
ServerName domain.tld
ServerAlias www.domain.tld
TransferLog /var/log/apache2/domain_tld_access.log
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/domain.tld>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/domain_tld_error.log
LogLevel warn
CustomLog /var/log/apache2/domain_tld_access.log combined
</VirtualHost>

The .htaccess plik jest identyczny z twoim:

@ /var/www/domain.tld
20:18:37 $ cat .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
# non-www domain
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.tld$
RewriteRule ^(/)?$ folder1/index.php [L]

Plik PHP po prostu wyświetli „test”:

@ /var/www/domain.tld
20:19:18 $ cat folder1/index.php
<?php
echo "test";
?>

Skonfigurowałem mój komputer z systemem Windows tak, aby domain.tld można faktycznie rozwiązać. Zredagowałem plik C:WindowsSystem32driversetchosts aby zawierać adres IP maszyny wirtualnej:

192.168.178.36  domain.tld
192.168.178.36  www.domain.tld

I to działa:

Screenshot FF

Screenshot Opera