Nastavujem pravidlo prepisovania, aby som mohol smerovať domain.com
premávka do www.domain.com
pomocou nasledujúceho pravidla:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Podľa môjho obmedzeného porozumenia $1
v RewriteRule
by malo zodpovedať čomukoľvek po domain.com/
a potom byť umiestnený na konci mojej prepísanej adresy URL www.domain.com/
.
Napríklad domain.com/abc
by sa malo stať www.domain.com/abc
.
Je to však nefunguje. Ak prejdem na domain.com/abc
potom táto cesta nie je vôbec prepísaná a ja len chápem domain.com/abc
bez www
.
Urobil som veľa čítania, len aby som zistil, že $1
by sa mal podľa môjho pochopenia o to postarať.
Môže mi niekto vysvetliť, prečo to nefunguje tak, ako si myslím, že by malo byť? Ďakujem.
odpovede:
0 pre odpoveď č. 1Ukázalo sa, že pretože som používal doplnok Wordpress AND W3 Cache, jednoducho som vložil kód na nesprávne miesto do môjho súboru .htaccess.
Kód by mal byť umiestnený v rámci # BEGIN Wordpress
codeblock a pred existujúcimi pravidlami, ktoré Wordpress už má zavedené.
Existujúci kód by mal vyzerať asi takto:
# BEGIN Wordpress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END Wordpress
K tomu som pridal svoj pôvodný kód takto:
# BEGIN Wordpress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END Wordpress
To opravuje problém, ktorý som popisoval vyššie. Ďakujem komentátorom, že podnietili môj myšlienkový proces.