Исправлена ошибка исправления Apache для определенных страниц
У меня проблема с перенаправлением .htaccess. Когда я печатаю:
http://www.domain.com/contact
он обращается к index.php, а не contact.php
здесь мой .htaccess:
Redirect 301 /clients http://clients.domain.com
RewriteEngine On
SetEnvIf Host ^www\. page=www
SetEnvIf Host ^mob\. page=mobile
RewriteBase /
SetEnvIfNoCase User-Agent "^Wget" bad_bo
#etc ...
Deny from env=bad_bot
RewriteCond %{HTTP_HOST} !^www.domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301]
RewriteRule ^about/?$ about.php
RewriteRule ^contact/?$ contact.php
rewriterule ^(.*)$ index.php?subdomain=%{ENV:page}&page=$1
в моем php я получаю:
<?php
print_r($_GET);
Array (
[subdomain] => www
[page] => contact.php
)
Что мне не хватает?
Ответы
Ответ 1
Попробуйте следующее правило:
RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
RewriteRule ^about/?$ about.php [NC,QSA,L]
RewriteRule ^contact/?$ contact.php [NC,QSA,L]
rewriterule ^([a-z0-9]+)$ index.php?subdomain=%{ENV:page}&page=$1 [NC,QSA,L]
Я также добавил флаги NC, QSA, L
, чтобы убедиться, что последнее правило [L]
выполняется, если соответствует, [NC]
для non case и [QSA]
для добавления строки запроса.
Ответ 2
Вам необходимо переписать свои правила о контактах и контактах следующим образом:
RewriteRule ^about/?$ about.php [L,QSA]
RewriteRule ^contact/?$ contact.php [L,QSA]