Mod_rewrite: как ловить .php файлы? - PullRequest
       11

Mod_rewrite: как ловить .php файлы?

1 голос
/ 26 сентября 2010

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

Я хочу, чтобы example.com/home был перенаправлен на example.com/index.php, но я не хочу прямой доступ к example.com/index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Несмотря на то, что это работает на первый взгляд, это не мешает пользователям посещать example.com/index.php напрямую. Как бы я решил это?


В ответ на ответ:

RewriteRule ^index.php$ / [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

RewriteRule ^home/?$ /index.php?category=1 [L]

example.com/home выходы example.com/category=1

Ответы [ 2 ]

1 голос
/ 26 сентября 2010

Попробуйте:

RewriteRule ^index.php$ / [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Что будет делать, если пользователь попытается перейти непосредственно к index.php, он перенаправит их в корень сайта.В противном случае он будет выполнять ваши существующие правила, передавая что-либо в index.PHP.

1 голос
/ 26 сентября 2010

Вы можете запустить preg_match() для .php в переменной $_SERVER['REQUEST_URI'], а затем использовать header() для соответствующего перенаправления. Например, в index.php:

if(preg_match('/\.php/', $_SERVER['REQUEST_URI'])) {
    header('Location: home');
    die();
}

Однако он не поддерживает какие-либо параметры строки запроса, так как я не знаю, какой у вас формат в перезаписи вашего / home. $_SERVER['QUERY_STRING'] будет здесь твоим другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...