#php #.htaccess #url-rewriting
#php #.htaccess #url-переписывание
Вопрос:
Если мой URL-адрес http://www.xyz.com/index.php?view=abc затем он должен открыться http://www.xyz.com/abc.php
Что я должен написать в .htaccess??
Заранее спасибо.
Комментарии:
1. Что вы хотите, чтобы ваши конечные пользователи вводили в свои браузеры?
index.php?view=abc
(что отличается от обычной перезаписи), илиabc.php
? То, как вы спросили, не дает понять, что увидят ваши пользователи.2. на самом деле я хочу, чтобы пользователь открыл index.php?view=abc тогда abc.php будет исполнено. и если пользователь вводит напрямую abc.php тогда он / она не сможет открыть эту страницу. Пользователю должен потребоваться доступ к нему через index.php?view=abc.
Ответ №1:
Если мой URL-адрес http://www.xyz.com/index.php?view=abc затем он должен открыться http://www.xyz.com/abc.php
Для этого вам не нужен .htaccess, просто введите index.php
$view = $_GET['view'];
if (strpos($view, '/') === false amp;amp; $view != "index" amp;amp; file_exists("$view.php"))
require "$view.php";
Убедитесь, что в вашем корневом каталоге нет других уязвимых php-файлов (но я бы рекомендовал использовать другие / лучшие методы для проверки пользовательского ввода по url).
Если вы хотите переписать наоборот, ваш .htaccess
может выглядеть примерно так:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^([a-z] ).php$ /index.php?view=$1 [L]
Комментарии:
1. Спасибо. Технология. Это работает. но что, если мне нужен обратный регистр. если кто-то вводит URL, например, www.xyz.com/login.php затем его следует перенаправить на, www.xyz.com/index.php?view=login
2. @user985361, разве это не то, что во второй части моего ответа?