Переписать правило перенаправления на .htaccess - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть правило перезаписи, которое работает на поддомене, отличном от www. Я хочу заставить все URL-адреса начинаться с www и обрабатывать все .html с помощью php:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^catalog\.html$ http://www.domain.com/static.php?staticpage=$1 [L]

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Если вы нажмете http://domain.com/catalog.html,, он успешно перенаправит на http: // www.domain.com/catalog.html (без пробела, конечно), если файл не существует. Или он просто отобразит http: // www.domain.com/catalog.html и отобразит фактический файл .html (без пробела), если catalog.html существует.

Я пытаюсь достичь http://www.domain.com/catalog.html без отображения static.php в браузере независимо от того, существует файл или нет. static.php должен обрабатывать каждую .html-страницу

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Переменные% из last cond regexp, и вам нужно условие для успеха, так как насчет:

RewriteCond %{HTTPS}s ^..(s?)
RewriteRule ^         -       [E=PROTO:http%1]

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^            %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
0 голосов
/ 29 февраля 2012

Я предполагаю, что вы хотите отобразить содержимое static.php при запросе файла .html.без отображения static.php в браузере.

При использовании http:// происходит внешнее перенаправление, в результате чего адрес отображается в браузере.

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule (.+)\.html$ static.php?staticpage=$1 [L]

Для HTTPS вы можете следовать предложению @TerryE.Но я не понимаю, какие страницы вы пытаетесь перенаправить на https

...